MSTest управляемый данными Тестовый набор DisplayName для строк из источника данных
Как установить DisplayName строки данных в тестах, управляемых данными, где источником данных является XML, а поставщиком - Microsoft.VisualStudio.TestTools.DataSource.XML.
XML:
<?xml version="1.0" encoding="utf-8" ?>
<environments>
<environment><name>IE</name></environment>
<environment><name>Chrome</name></environment>
</environments>
Конфигурация приложения:
<!-- CONNECTION STRINGS SETTINGS -->
<connectionStrings>
<add name="IE_Chrome" connectionString="IE_Chrome.xml" providerName="Microsoft.VisualStudio.TestTools.DataSource.XML"/>
</connectionStrings>
<!-- PARAMETERIZING TEST SETTINGS -->
<microsoft.visualstudio.testtools>
<dataSources>
<add name="IE_Chrome" connectionString="IE_Chrome" dataTableName="environment" dataAccessMethod="Sequential"/>
</dataSources>
</microsoft.visualstudio.testtools>
Выход:
Я хотел бы отобразить имя среды вместо "строка данных 0".
1 ответ
Решение
Возможно ли это с настраиваемым атрибутом источника данных. Примером может быть:
public class XmlCustomDataSourceAttribute : Attribute, ITestDataSource
{
public IEnumerable<object[]> GetData(MethodInfo methodInfo)
{
foreach (var environment in YourStaticXmlParser.GetEnvironments())
{
yield return new object[] { environment.Name };
}
}
public string GetDisplayName(MethodInfo methodInfo, object[] data)
{
if (data != null)
{
return string.Format("Target Environmment- {0} ({1})", methodInfo.Name, data[0]);
}
return null;
}
}
и метод проверки должен выглядеть так:
[DataTestMethod]
[XmlCustomDataSource]
public void Should_Blur(string environmentName)
{
var actualEnvironment = SomeMethodToGetActualEnvironment();
Assert.AreEqual(environmentName, actualEnvironment);
}