【发布时间】:2017-08-25 16:23:16
【问题描述】:
是否可以通过其他(自定义)属性以某种方式初始化 sealed 属性?
原因很简单。我正在使用 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
}
where 属性MyDS 将在一处自动填充DataSource 的参数。我不能使用继承,因为DataSourceAttribute 被密封。
那么,是否可以避免使用自定义属性对我的测试方法进行多余的属性声明?
【问题讨论】:
标签: c# unit-testing selenium