如何缩短单元测试方法

How to make unit test methods shorter

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

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

但看起来几乎是相同的代码。能不能写的短一些?

我正在使用 NUnit 测试框架。

这是代码:

public class Parcel
{
    
 //Some code
    
}

现在有效

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

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

您可以使用 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);
}