Информация: с использованием .NET 4.0 и VS 2012Неправильный результат теста для модульного теста TimeZoneInfo члена
Привет,
Я собираюсь единицу проверить мой собственный класс, который получил член типа 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) Амстердам, Берлин, Берн, Рим , Стокгольм, Вена>. "
Поскольку «Equals» переопределен в классе TimeZoneInfo, я не понимаю, что здесь происходит. Не могли бы вы помочь мне сделать второе утверждение? Заранее большое спасибо!
Роб
Привет, Джон, я использую .NET 4.0, как указано выше моего сообщения. ;-) О, черт возьми! Вы совершенно правы! Я только что обнаружил, что в .net 4.5 «Равно» отменено; однако, в .net 4.0 это не так! Wtf !! Thx много! – macrobbsen
@macrobbsen: Righto, отредактирует мой ответ, чтобы указать это. –
@ macrobbsen: глядя на документы, он может быть переопределен в * полной версии фреймворка .NET 4.0, но не в профиле клиента. –