【发布时间】:2011-08-02 00:49:01
【问题描述】:
我有一个类似的方法:
public virtual IList<string> Validate()
{
...
}
我想使用 NUnit 对此进行单元测试。这是 Vehicle 类的一部分。
Vehicle 可以是不同的类型,即。 CarBoatTruck等
在我的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?
也许这是为不同类型编写测试的一种奇怪方法?
谁有更好的建议?
【问题讨论】:
标签: asp.net-mvc unit-testing nunit