TimeZoneInfo成员的单元测试的测试结果不正确



信息:使用.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中。

相关内容

  • 没有找到相关文章