我有一个要进行单元测试的数据转换功能。我已经确定了一个有限但相当长的可能输入列表(大约 1000 个),可以导致大约 50 个输出。VS 单元测试中是否有办法设置输入列表和预期输出列表(如两列 Excel 图表中)并将其输入单元测试?
如果有办法,怎么做?谢谢。
我有一个要进行单元测试的数据转换功能。我已经确定了一个有限但相当长的可能输入列表(大约 1000 个),可以导致大约 50 个输出。VS 单元测试中是否有办法设置输入列表和预期输出列表(如两列 Excel 图表中)并将其输入单元测试?
如果有办法,怎么做?谢谢。
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.");
}
如果你有这么多的输入,你可以把它写成一个自动化的集成测试。具体来说,列出某个文件中的所有输入/输出,在测试中读取该文件,然后以这种方式执行测试。
这使您的测试简单易读,并且所有数据都是外部数据,并且仍然可以轻松更改而不会混淆实际测试的逻辑。