如何使单元测试方法更短



我有一些单元测试。这样的:

[TestFixture]
public class Tests
{
[SetUp]
public void Setup()
{
}
}

但它看起来几乎是相同的代码。能不能把这个写短一点?

我正在使用NUnit测试框架。

这是代码:

public class Parcel
{

//Some code

}

现在可以工作了

您可以使用TestCase而不是Test属性来使用不同的数据运行相同的测试代码,例如

[TestCase(0.02m, "Name: parcel - Postal code 2582Cd - Weight 0,02 - Value 0,0 - Department Mail")]
[TestCase(2m, "Name: parcel - Postal code 2582Cd - Weight 2 - Value 0,0 - Department Regular")]
public void ParcelsWithSpecificWeightShouldBeSpecificToString(decimal weight, string expected)
{
var parcel = new Parcel { Name="parcel", PostalCode = "2582Cd", Weight = weigth, Value = 0.0m };
Assert.AreEqual(expected, parcel.ToString());
}

但实际上您正在测试Department属性,所以我建议不要测试parcel.ToString(),而是parcel.Department:

[TestCase(0.02m, "Mail")]
[TestCase(2m, "Regular")]
public void ParcelsWithSpecificWeightShouldBeSpecificDepartment(decimal weight, string expected)
{
var parcel = new Parcel { Name="parcel", PostalCode = "2582Cd", Weight = weigth, Value = 0.0m };
Assert.AreEqual(expected, parcel.Department);
}

如果您试图减少测试方法中的行数-您可以在Setup()中执行包初始化,如parcel1, parcel2....parcelN.

然而,这仍然会使用与当前设置相同的代码行数,它将只是在测试方法之外。老实说,进一步优化2行方法并不容易。

最新更新