2013-12-10 8 views
2

Информация: с использованием .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, я не понимаю, что здесь происходит. Не могли бы вы помочь мне сделать второе утверждение? Заранее большое спасибо!

Роб

ответ

5

Ваше прохождение теста вызывает

bool Equals(TimeZoneInfo) 

Ваш провал теста неявно вызывает

bool Equals(object) 

В .NET 4.0 version of TimeZoneInfo, Equals(object) не подменены; в .NET 4.5 у него есть.

+0

Привет, Джон, я использую .NET 4.0, как указано выше моего сообщения. ;-) О, черт возьми! Вы совершенно правы! Я только что обнаружил, что в .net 4.5 «Равно» отменено; однако, в .net 4.0 это не так! Wtf !! Thx много! – macrobbsen

+0

@macrobbsen: Righto, отредактирует мой ответ, чтобы указать это. –

+0

@ macrobbsen: глядя на документы, он может быть переопределен в * полной версии фреймворка .NET 4.0, но не в профиле клиента. –

Смежные вопросы