0

从最近几天开始,我一直在从事数据驱动的单元测试。我使用 Excel 电子表格作为数据源。虽然它减少了我的测试方法中的冗余代码(而不是在测试方法中写入所有测试数据并每次都调用相同的函数)但另一方面我认为它使我的单元测试变得复杂(使用配置设置,从 Excel 解析数据,意外的异常......等等)。任何人都可以阐明每种方法的优缺点。为了更好地理解,我在下面写了一个有和没有数据源的示例测试方法:

有数据源

[TestMethod]
[DataSource("CompanyAddressInfo_DataSource")]
[DeploymentItem("CoreUnitTests\\CompanyUnitTests\\CompanyTestData.xlsx")]
public void CompanyAddressInfo_GetItem_Test()
{
    if (TestContext.DataRow["Company_No"] != DBNull.Value)
    {
        bool expected = false;
        bool actual=false;

        if (TestContext.DataRow["Expected"].ToString() == "Y")
        expected = true;
        long Company_No = Convert.ToInt64(TestContext.DataRow["Company_No"]);

        CompanyAddressInfo obj = CompanyAddressInfo.GetItem(Company_No);

        if (obj != null)
        {actual = (obj.Company_No == Company_No);}

        Assert.AreEqual(expected,actual);
    }
}

无数据源

[TestMethod]
public void CompanyAddressInfo_GetItem_Test()
{
    bool actual=false;

    long Company_No;

    Company_No = 20;
    CompanyAddressInfo obj = CompanyAddressInfo.GetItem(Company_No);
    actual = (obj.Company_No == Company_No);
    Assert.AreEqual(true,actual);

    Company_No = 23;
    CompanyAddressInfo obj = CompanyAddressInfo.GetItem(Company_No);
    actual = (obj.Company_No == Company_No);
    Assert.AreEqual(false,actual);

    ..............so on

}

请注意,上述代码只是一个示例。此外,我认为数据驱动单元测试的另一种替代方法是创建一个通用函数来调用 dll 并将测试数据传递给该函数(从而减少冗余)。

4

0 回答 0