是否可以以某种方式从其他(自定义(属性初始化密封属性?
原因很简单。我正在使用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
}
这应该可以节省一些打字时间。
演练:使用配置文件定义数据源中提供了更多信息。