【问题标题】:VS unit test with a long list of inputs带有一长串输入的 VS 单元测试
【发布时间】:2012-05-14 16:17:03
【问题描述】:
我有一个要进行单元测试的数据转换功能。我已经确定了一个有限但相当长的可能输入列表(大约 1000 个),可以导致大约 50 个输出。
VS 单元测试中是否有办法设置输入列表和预期输出列表(例如在两列 Excel 图表中)并将其输入到单元测试中?
如果有办法,怎么办?谢谢。
【问题讨论】:
标签:
visual-studio
unit-testing
vs-unit-testing-framework
【解决方案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.");
}
【解决方案2】:
如果您有这么多输入,您可以将其编写为自动化集成测试。具体来说,列出某个文件中的所有输入/输出,在测试中读取该文件,然后以这种方式执行测试。
这使您的测试简单易读,并且所有数据都是外部数据,并且仍然可以轻松更改而不会混淆实际测试的逻辑。