Assert.AreEqual (...) дает мне исключение System.FormatException - PullRequest
0 голосов
/ 10 октября 2011
Assert.AreEqual(expected, actual, "The value returned for {0}'s Foo method should be 'Bar'.",
            typeof(Calculator));

Assert.AreEqual(expected, actual, "The value returned for {0}'s Foo method should be 'Bar'.",
            typeof(Calculator).Name);

Обе эти строки выдают:

Метод теста MyTesting.FooTest выбросил исключение: System.FormatException: входная строка была в неправильном формате.


System.Text.StringBuilder.AppendFormat (поставщик IFormatProvider, формат String, аргументы Object [])System.String.Format (поставщик IFormatProvider, формат String, аргументы Object [])MyTesting.FooTest () в C: \ TFS \ Scratchpad \ MyLibrary \ Unit Testing \ FooTest.cs: строка 195

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

Ответы [ 2 ]

1 голос
/ 12 октября 2011

Сделайте тест, чтобы убедиться, что ваш объект Калькулятор не равен нулю перед тестом на равенство.

Этот тип ошибки будет возникать в данном конкретном случае в строковом формате.

0 голосов
/ 19 февраля 2013

Старайтесь не использовать отформатированную строку и посмотрите, не сработает ли она до сих пор. Сегодня я столкнулся с той же проблемой, пытаясь сделать утверждение для структур, и это не позволило моему утверждению выдать исключение формата. Кажется, есть проблемы с отформатированными строками. (Я использую мс тест)

Assert.AreEqual(expected, actual,"The value returned for " + typeof (Calculator) + "'s Foo method should be 'Bar'.");
Assert.AreEqual(expected, actual, "The value returned for " + typeof(Calculator) + "'s Foo method should be 'Bar'.");

Мне не нравится создавать подобные строки, но это был единственный способ заставить мой тест работать правильно.

...