现在,如果你有一个看起来像这样的测试:
[TestMethod]
[DeploymentItem("DataSource.csv")]
[DataSource(
Microsoft.VisualStudio.TestTools.DataSource.CSV,
"DataSource.csv",
"DataSource#csv",
DataAccessMethod.Sequential)]
public void TestSomething()
{
string data = TestContext.DataRow["ColumnHeader"].ToString();
/*
do something with the data
*/
}
执行此测试时,您将获得与数据值一样多的测试运行。
我想做的是在代码中复制这种行为,同时仍然拥有数据源。例如:假设我想针对 Web 服务的多个部署版本运行此测试(这是一个功能测试,所以没有任何东西被模拟 - 即它很可能是针对部署到多个网站的 codedui 测试主机)。
[TestMethod]
[DeploymentItem("DataSource.csv")]
[DataSource(
Microsoft.VisualStudio.TestTools.DataSource.CSV,
"DataSource.csv",
"DataSource#csv",
DataAccessMethod.Sequential)]
public void TestSomething()
{
var svc = helper.GetService(/* external file - NOT a datasource */);
string data = TestContext.DataRow["ColumnHeader"].ToString();
/*
do something with the data
*/
}
现在,如果我在外部文件中列出了 2 个部署位置,并且在测试方法的数据源中有 2 个值,我应该得到 4 个测试。
您可能会问为什么我不只是将值添加到数据源。外部文件中的数据将通过.testsettings
测试运行中的部署项拉入,因为它们可以并且将为每个运行测试的人定义不同的,我不想强制重建测试代码为了运行测试,或者为测试增加数据文件的数量。每个测试可能/应该能够指定它想要测试的位置(类型在编译时已知,而不是物理位置)。
同样,不可能为每个部署位置创建测试,因为部署位置可以并且将会在位置和数量上是动态的。
谁能指出一些可能帮助我解决我的这个问题的信息?