我有一些单元测试。像这样:
[TestFixture]
public class Tests
{
[SetUp]
public void Setup()
{
}
}
但它看起来几乎是相同的代码。可以写得更短吗?
我正在使用 NUnit 测试框架。
这是代码:
public class Parcel
{
//Some code
}
现在可以使用
我有一些单元测试。像这样:
[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 行方法并不容易。