带有一长串输入的VS单元测试

时间:2012-05-14 16:17:03

标签: visual-studio unit-testing vs-unit-testing-framework

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

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

2 个答案:

答案 0 :(得分:1)

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

来自this blog post的示例:

[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.");
}

答案 1 :(得分:0)

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

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