自定义属性以初始化其他密封属性



是否可以以某种方式从其他(自定义(属性初始化密封属性?

原因很简单。我正在使用Selenium Grid编写一个数据驱动的单元测试项目。我的目标是只编写测试并使用数据源控制当前测试的浏览器。(我想避免编写k*n测试,其中n是测试,k是支持的浏览器,其中每个测试都指定所需的WebDriver

这个解决方案对我非常有效,但它需要像这样声明所有方法:

[TestMethod, DataSource("Microsoft.VisualStudio.TestTools.DataSource.CSV", "|DataDirectory|\BrowserSelector.csv", "BrowserSelector#csv", DataAccessMethod.Sequential), DeploymentItem("BrowserSelector.csv")]
public void TestMethod()
{
// implementation
}

如您所见,DataSource的参数非常长。我可以在多行上编写它,这将提高可读性,但它并不能解决我的主要问题:我期待很多测试(轻松500+- 它适用于大型商业应用程序(,我想避免不必要的和冗余的属性定义

我的想法是这样的:

[TestMethod, MyDS, MyDep]
public void TestMethod()
{
// implementation
}

其中属性MyDS将自动填充DataSource的参数。我不能使用继承,因为DataSourceAttribute密封的

那么,是否可以避免使用自定义属性对我的测试方法进行冗余属性破坏?

想不出任何方法来执行您的要求,但为什么不将数据源设置添加到 app.config:

<microsoft.visualstudio.testtools>  
<dataSources>  
<add name="MyDataSource" connectionString="Provider=Microsoft.VisualStudio.TestTools.DataSource.CSV;DataSource=|DataDirectory|\BrowserSelector.csv" dataTableName="BrowserSelector#csv" dataAccessMethod="Sequential"/>  
</dataSources>  
</microsoft.visualstudio.testtools>  

然后使用此构造函数设置属性?

[TestMethod, DataSource("MyDataSource")]
public void TestMethod()
{
// implementation
}

这应该可以节省一些打字时间。

演练:使用配置文件定义数据源中提供了更多信息。

最新更新