MSTest数据驱动测试设置来自数据源的行的DisplayName

18

在数据驱动测试中,如何设置使用XML作为数据源且Microsoft.VisualStudio.TestTools.DataSource.XML作为提供程序的数据行的显示名称(DisplayName)。

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个回答

2

使用自定义数据源属性是否可行。一个示例可以是:

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);
        }

最终您的测试细节将是: 在此输入图片描述

完整的演示解决方案可以在此处找到:https://github.com/matei-tm/howto-demos/tree/main/MstestCustomDataSource - Mircea Matei

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接