单元测试 toString 方法

Unit testing toString method

我尝试将测试单元化为 Tostring 方法:

所以我有这个代码:

public class Parcel
{
 //Working
}

你应该这样写你的测试:

[Test]
public void ParcelsUpToWeightOneKGShouldBeDepartmentMail()
{
    var parcel = new Parcel { Name="pacel ", PostalCode="2582Cd", Weight= 0.02m, Value=0.0m};          
         
    Assert.Equal("Name: pacel - Postal code 2582Cd - Weight 0.02 - Value 0.0 - Department Mail", parcel.ToString());
}

ToString()方法returns一个字符串,但是不改变parcel的状态。所以你应该检查返回值。

您写道:“我只想对方法 CreateDepartmentValue 的第一个条件进行单元测试。”在那种情况下,不要测试 ToString() 方法,而是测试 Department 属性 的值。您的测试变得更加稳定,因为否则如果您更改 ToString() 方法,您将不得不更改测试,尽管您只对 Deptartment 属性.[= 的值感兴趣15=]

您的测试可能如下所示:

[Test, Pairwise]
public void DepartementShouldDependOnWeight(
       [Values(1.0m, 1.01m, 10.0m, 10.01m)]decimal weight,
       [Values("Mail","Regular","Regular","Heavy")]string expectedDepartment)
{
    var parcel = new Parcel { Weight = weight, Value = 0 };
    Assert.AreEqual(parcel.Department, expectedDepartment);
}