首页 > 解决方案 > 如何使单元测试方法更短

问题描述

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

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

但它看起来几乎是相同的代码。可以写得更短吗?

我正在使用 NUnit 测试框架。

这是代码:

public class Parcel
{
    
 //Some code
    
}

现在可以使用

标签: c#unit-testingnunit

解决方案


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

推荐阅读