私は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]
、基本クラスに構成の両方のセットをロードし、そこに構成をロードして、基本的に一連のテストを便利に実行するためにのみ使用されるスーパークラスの必要性を排除できます。 .