1

私は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 から独立した構成を維持し、テスト ケースで多くのパラメーターを作成することを繰り返さないようにしています (データ駆動型の初期化が可能です)。クラスのような属性も追加してみ[TestFixture(typeof(Browser), typeof(Client))]ました。AllClientsTest

属性を設定するデータ駆動型の方法があれば[TestFixture]、基本クラスに構成の両方のセットをロードし、そこに構成をロードして、基本的に一連のテストを便利に実行するためにのみ使用されるスーパークラスの必要性を排除できます。 .

4

1 に答える 1

0

NUnit の SetUpFixture 機能を見たことがありますか? 私はあなたがそれを介して試みていることと漠然と似たようなことをしました。

SetUpFixture を使用してサイトをウォームアップする方法についてのブログ記事を書きましたが、これは別の作業でした。役に立つかもしれません。

于 2013-06-27T17:30:20.267 に答える