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