信息:使用.NET 4.0和VS 2012
你好,
我即将对我自己的类进行单元测试,该类有一个TimeZoneInfo类型的成员。然而,当我尝试在测试中考虑此成员时,它总是失败。
以下是一个简化的示例,用于验证在实例化过程中_timeZone是否已正确初始化:
public class MyClass
{
public TimeZoneInfo _timeZone;
public MyClass(string timeZoneId)
{
_timeZone = TimeZoneInfo.FindSystemTimeZoneById(timeZoneId);
}
}
[TestMethod()]
public void MyClassCtorTest()
{
TimeZoneInfo expected = TimeZoneInfo.FindSystemTimeZoneById("W. Europe Standard Time");
TimeZoneInfo actual = new MyClass("W. Europe Standard Time")._timeZone;
Assert.IsTrue(expected.Equals(actual)); //This test passes!
Assert.AreEqual(expected, actual); //This test fails!
}
我发现Assert.IsTrue(…)通过,而Assert.AreEqual(…)失败:Assert.AreEqual失败。预期时间:<(UTC+01:00)阿姆斯特丹、柏林、伯尔尼、罗马、斯德哥尔摩、维也纳>。实际时间:&l特;(UTC+01:00)阿姆斯特丹、Berlin、伯尔尼、罗姆、斯德哥尔摩、维恩>
由于"Equals"在TimeZoneInfo类中被重写,我在这里不了解发生了什么。你能帮我通过第二个断言吗?提前非常感谢!
Rob
您通过的测试调用
bool Equals(TimeZoneInfo)
失败的测试隐含地调用
bool Equals(object)
在TimeZoneInfo
的.NET 4.0版本中,Equals(object)
尚未被覆盖;在.NET 4.5中。