Я знаю, что это старый вопрос, но я решил добавить свой бит.
Как правило, в каждом тестовом случае у меня будет как можно меньше утверждений. Часто можно написать тесты, чтобы сохранить множество различных утверждений.
Предположим, у меня есть модульные тесты для метода, который создает приветствие (например, мистер Смит) из компонентов имени. Я хочу проверить это с большим количеством различных сценариев, нет необходимости иметь отдельный тест для каждого.
Учитывая следующий код, есть много разных утверждений. Если они не работают, вы можете исправить их по одному, пока утверждения не прекратятся.
Assert.AreEqual("Mr Smith", GetSalutation("Mr", "J", "Smith"));
Assert.AreEqual("Mr Smith", GetSalutation("Mr", "John", "Smith"));
Assert.AreEqual("Sir/Madam", GetSalutation("", "John", "Smith"));
Assert.AreEqual("Sir/Madam", GetSalutation("", "J", "Smith"));
Альтернативой этому является вести подсчет проблем и утверждать это в конце.
int errorCount = 0;
string result;
result = GetSalutation("Mr", "J", "Smith");
if (result == "Mr Smith")
errorCount++;
result = GetSalutation("Mr", "John", "Smith");
if (result == "Mr Smith")
errorCount++;
Assert.AreEqual(0, errorCount);
В реальной ситуации я бы, вероятно, добавил несколько команд Trace для записи подробностей отдельных тестов, которые не прошли окно вывода