簡體   English   中英

NUnit配置和子類中參數化TestFixture的繼承

[英]NUnit Configuration and Inheritence of Parameterized TestFixture in Subclasses

我正在建立一個Selenium套件。 我正在嘗試找出如何最好地為所有瀏覽器和所有客戶端運行TestFixture的方法。 這是我嘗試做的事情,由於“沒有合適的構造函數”而無法使用

這是我的基類,為瀏覽器和方法創建了用於子類的webdriver。

[TestFixture(Browser.Chrome)]
[TestFixture(Browser.Firefox)]
[TestFixture(Browser.IE)]
[TestFixture(Browser.Safari)]
abstract class WebDriverTest
{
    protected IWebDriver driver;
    protected Browser browser;

    public WebDriverTest(Browser browser)
    {
        this.browser = browser;
    }

    protected IWebDriver CreateWebDriver()
    {
        CreateWebDriver(browser);
    }
}

以及適用於所有客戶的TestFixture。 對於屬於某些客戶端集的功能,我還會有其他類似的測試類。

[TestFixture(Client.Client1)]
[TestFixture(Client.Client2)]
abstract class AllClientsTest : WebDriverTest
{
    protected Client client;

    public AllClientsTest(Browser browser, Client client) : base(browser)
    {
        this.client = client;
    }

    protected Navigator GetNavigator()
    {
        return NewNavigator(client)
    }
}

最后是我將使用針對所有客戶端運行的webdriver編寫測試的類。

class InheritanceTest : AllClientsTest
{
    public InheritanceTest(Browser browser, Client client) : base(browser, client)
    {
    }

    [Test]
    public void Print()
    {
        Console.WriteLine(browser + ":" + client);
    }
}

這樣的事情可能嗎? 我試圖使配置獨立於TestRunner,而不是重復測試用例中的大量參數(可以由數據驅動初始化)。 我還嘗試在AllClientsTest類中添加類似[TestFixture(typeof(Browser), typeof(Client))]AllClientsTest

如果有一種數據驅動的方式來設置[TestFixture]屬性,我可以將兩個配置集都加載到基類中並在那里加載配置並消除對超類的需求,這些超類基本上僅用於方便地運行一堆測試。

您是否看過NUnit的SetUpFixture功能? 我所做的事情與您正在嘗試的內容大致相似。

我寫了一篇關於使用SetUpFixture來預熱網站的博客 ,但這是另一項任務。 這可能會有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM