У меня есть такой метод:
public virtual IList<string> Validate()
{
...
}
Я хочу провести модульное тестирование с помощью NUnit.Это часть Транспортного средства класса.
A Vehicle
может быть разных типов, т.е.Car
Boat
Truck
и т. Д.
В верхней части моего TestFixture
я настроил VehicleTypes
:
private VehicleType[] _vehicleTypes;
[SetUp]
public void MyTestInitialize()
{
transScope = new TransactionScope();
var boat= new VehicleType { Name = "boat" };
var car = new VehicleType { Name = "car" };
var truck = new VehicleType { Name = "truck" };
_vehicleTypes= new VehicleType[] { boat, car, truck };
...
}
Я хочу проверить, чтоСообщение об ошибке отправляется обратно из метода только для лодки.
Мой модульный тест выглядит следующим образом:
[TestCase(0, "This vehicle is inappropriate because it doesn't have wheels")]
[TestCase(1, null)]
[TestCase(2, null)]
public void Validate_Vehicle_ReturnsAppropriateErrorMessage(int vehicleType, string expectedResult)
{
var vehicle = new Vehicle { VehicleType = _vehicleTypes[vehicleType] };
var results = vehicle.Validate();
string result;
if (results.Count == 0)
result = null;
else
result = results[0];
Assert.IsTrue(expectedResult == result);
}
Так вот как я пытался проверить его с помощью TestCases.Однако я не уверен, что это правильный подход, поскольку модульные тесты не должны содержать ifs
?
Также, возможно, это странный подход к написанию теста для различных типов?
Кто-нибудьесть лучшие предложения?