Код: Выделить всё
[TestCase("A", Is.Null)]
[TestCase("B", Is.Not.Null)]
public void TestFoo(string input, Constraint expectedContraint)
{
var result = Foo(input);
Assert.That(result, expectedConstraint);
}
Один вариант:
Код: Выделить всё
[TestCase("A", true)]
[TestCase("B", false)]
public void TestFoo(string input, bool shouldBeNull)
{
var expectedConstraint = shouldBeNull ? Is.Null : Is.Not.Null;
var result = Foo(input);
Assert.That(result, expectedConstraint);
}
Более того, у меня такое ощущение, что Assert. That(result,expectedConstraint) имеет не самую лучшую читабельность.
Вариант исправления этого может быть
Код: Выделить всё
if (shouldBeNull) {
Assert.That(result, Is.Null);
} else {
Assert.That(result, Is.Not.Null);
}
Способом избежать логики и улучшить читабельность было бы разделить тест на два отдельных теста. Однако в этом случае, если тест довольно сложен в настройке (и именно поэтому я хочу избежать добавления логики), я буду дублировать слишком много кода.
Я думаю, что в этом случае В большинстве случаев любое из этих решений подходит, и особой разницы нет, но я хотел бы знать, есть ли какая-то интересная функция NUnit, которую я упускаю, или есть какая-то хорошая практика, которую я мог бы применить для написания тестов более чисто. Спасибо!
Подробнее здесь: https://stackoverflow.com/questions/789 ... n-testcase