Прямо сейчас, если у вас есть тест, который выглядит так:
[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
*/
}
При выполнении этого теста вы получите столько запусков тестов, сколько у вас есть значений данных.
Что я хотел бы сделать, так это дублировать такое поведение в коде, сохраняя при этом источник данных. Например: предположим, что я хочу запустить этот тест для нескольких развернутых версий веб-службы (это функциональный тест, поэтому ничего не имитируется, т. е. это вполне может быть тест 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
для тестового запуска, потому что они могут и будут определяться по-разному для каждого человека, выполняющего тесты, и я не хочу принудительно перестраивать тестовый код. для запуска тестов или увеличить количество файлов данных для тестов. Каждый тест может/должен иметь возможность указать, какие местоположения он хотел бы протестировать (типы известны во время компиляции, а не физические местоположения).
Точно так же невозможно создать тест для каждого места развертывания, поскольку места развертывания могут и будут меняться по расположению и количеству.
Может ли кто-нибудь указать мне некоторую информацию, которая может помочь мне решить эту мою проблему?