0

我有一个要进行单元测试的数据转换功能。我已经确定了一个有限但相当长的可能输入列表(大约 1000 个),可以导致大约 50 个输出。VS 单元测试中是否有办法设置输入列表和预期输出列表(如两列 Excel 图表中)并将其输入单元测试?

如果有办法,怎么做?谢谢。

4

2 回答 2

1

MSTest 有DataSourceAttribute. 通过用它标记单元测试方法,您可以授予您对数据源的测试访问权限。它支持多种格式,从数据库到 CSV 或 excel 文件。

此博客文章中的示例:

[TestMethod]
[DataSource("Microsoft.VisualStudio.TestTools.DataSource.CSV",
    "MyWidgetTests.csv", "MyWidgetTests#csv", DataAccessMethod.Sequential)]
public void TestMyBusinessLogicWithCsv()
{
    int valueA = Convert.ToInt32(TestContext.DataRow["valueA"]);
    int valueB = Convert.ToInt32(TestContext.DataRow["valueB"]);
    int expectedResult = Convert.ToInt32(TestContext.DataRow["expectedResult"]);
    int actualResult = MyWidget.MyBusinessLogic(valueA, valueB);
    Assert.AreEqual(expectedResult, actualResult, 
        "The result returned from the widget was not as expected.");
}
于 2012-05-14T17:25:16.497 回答
0

如果你有这么多的输入,你可以把它写成一个自动化的集成测试。具体来说,列出某个文件中的所有输入/输出,在测试中读取该文件,然后以这种方式执行测试。

这使您的测试简单易读,并且所有数据都是外部数据,并且仍然可以轻松更改而不会混淆实际测试的逻辑。

于 2012-05-14T16:21:46.477 回答