的信息: 使用.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)阿姆斯特丹,柏林,伯尔尼,罗马,斯德哥尔摩,维也纳>。实际:<(UTC + 01:00)阿姆斯特丹,柏林,伯尔尼,罗马,斯德哥尔摩,Wien&gt ;.“
由于在TimeZoneInfo类中覆盖了“Equals”,因此我不知道发生了什么。你能帮助我通过第二个断言吗?非常感谢你提前!
罗布
答案 0 :(得分:5)
您的通过测试呼叫
bool Equals(TimeZoneInfo)
您的失败测试会隐式调用
bool Equals(object)
在.NET 4.0 version of TimeZoneInfo
中,Equals(object)
尚未被覆盖;在.NET 4.5它有。