Модульные тесты для C # в Visual Studio - Assert.AreEqual - PullRequest
1 голос
/ 01 ноября 2010

У меня есть класс, для которого я переопределил операторы .Equals (), ==,! =, + И%.Понятно, что я хочу проверить, все ли работает нормально.Что довольно забавно, так это то, что тест на добавление '+' проходит успешно внутри программы, но не проходит при использовании реального UnitTest!

В программе:

        Stats a = new Stats();
        Stats b = new Stats();
        Stats expected = new Stats();
        Stats actual = new Stats();

        a.AC = 5;
        b.AC = 10;
        expected.AC = 15;

        actual = a + b;
        bool r1 = (expected == actual);     //true
        bool r2 = expected.Equals(actual);  //true

В UnitTest:

        Stats a = new Stats();
        Stats b = new Stats(); 
        Stats expected = new Stats();
        Stats actual = new Stats();

        a.AC = 5;
        b.AC = 10;
        expected.AC = 15;

        actual = a + b;
        Assert.AreEqual(expected, actual);

Тест не пройден.

Кажется, я не получаю что-то здесь ... Кто может помочь?

С уважением, Кристиан

Ответы [ 2 ]

0 голосов
/ 01 ноября 2010

решаемая.Отладка (CTRL + R, CTRL + T) показала мне, что UnitTest использовал более старую версию моего класса.После дикой перестройки он использовал для тестирования актуальную версию.

Это довольно раздражает, но я уверен, что найду способ убедиться, что модульный тест проверяет только самую актуальную версию каждого класса.

Спасибо, ребята!

0 голосов
/ 01 ноября 2010

Рекомендуется, чтобы любой класс, переопределяющий Equals, также переопределял System.Object.GetHashCode. Ref

...