#c# #.net #unit-testing
#c# #.net #модульное тестирование
Вопрос:
При тестировании метода, возвращаемого типа bool.
Должны ли вы иметь:
expected = true;
Assert.AreEqual(expected, actual);
или
Assert.IsTrue(actual);
Я знаю, что они оба приводят к одному и тому же результату, но какую практику лучше использовать?
РЕДАКТИРОВАТЬ: например, если я делаю AreEqual, разве это не то же самое, что делать isTrue для метода, который возвращает строку a la ниже:
string expected = “true”;
string actual = test.testMethod(data)
bool test;
if expected.equals(actual)
test = true;
else
test = false;
Assert.IsTrue(test);
Комментарии:
1.При каких обстоятельствах у вас есть переменная
expected
, которая, как вы знаете, всегда истинна? То есть, если вы знаете, что это всегда верно, тогда зачем вообще иметь переменную? Просто используйте литералtrue
.2. @EricLippert: он пытается соответствовать шаблону, который автоматически генерируется VS, который выглядит точно так же (щелкните правой кнопкой мыши метод, возвращающий bool, затем выберите Создать модульные тесты).
Ответ №1:
Вы должны использовать, только Assert.IsTrue
если вы тестируете что-то, что напрямую возвращает логическое значение, которое всегда должно быть true .
Вы не должны массировать данные, чтобы получить логическое значение for IsTrue
; вместо этого вы должны вызвать более подходящий метод в Assert
or CollectionAssert
.
В вашем отредактированном примере вы должны во что бы то ни стало вызвать Assert.AreEqual
вместо этого; это даст вам гораздо более приятное сообщение.
Ответ №2:
Использование Assert.IsTrue
более четкое и менее подробное.
Комментарии:
1. И сообщение лучше, когда тест не удался.
2. @Toto: Как
Assert.IsTrue failed
лучше?3. я просто тестирую. Я помню, что сообщение было другим, но нет. Извините.