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