2017-08-25 82 views
1

是否有可能以某種方式初始化密封屬性從其他(自定義)屬性?自定義屬性來初始化其他密封屬性

原因很簡單。我正在寫一個數據驅動的單元測試項目與硒網格。我的目標是隻寫測試和使用數據源控制目前測試瀏覽器。 (我想避免編寫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+ - 它是一個大型的商業應用程序)和我最後要避免 unnecesarry和冗餘屬性定義

我的想法是這樣的:

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

其中attribute MyDS將填補自動在一個地方DataSource的參數。我不能使用繼承,因爲DataSourceAttribute密封

那麼,是否有可能避免使用自定義屬性來測試我的測試方法的冗餘屬性?

+0

檢查文檔https://msdn.microsoft.com/en-us/library/microsoft.visualstudio.testtools.unittesting.datasourceattribute.aspx#Anchor_7 – Nkosi

回答

2

想不出任何辦法做到你的要求,但爲什麼不能添加數據源設置的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> 

然後設置使用this constructor屬性?

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

這應該會節省您一些打字。

更多信息在Walkthrough: Using a Configuration File to Define a Data Source