NUnitのパラメーター化されたテストを使用しました。
列挙型を作成しました:
/// <summary>
/// Enum that holds references to different browsers used in testing.
/// </summary>
public enum BrowserTypeEnum
{
/// <summary>
/// Google Chrome.
/// </summary>
Chrome,
/// <summary>
/// Mozilla Firefox.
/// </summary>
Firefox,
/// <summary>
/// Internet Explorer.
/// </summary>
InternetExplorer
}
次のようにTestFixtureでそれを呼び出しました:
/// <summary>
/// Tests related to browsing Google
/// </summary>
[TestFixture(BrowserTypeEnum.Chrome)]
[TestFixture(BrowserTypeEnum.Firefox)]
public class GoogleTests : AbstractTestFixture
{
}
AbstractTestFixtureの場合:
/// <summary>
/// Create's the browser used for this test fixture.
/// <para>
/// Must always be called as part of the test fixture set up, not the base test fixtures.
/// </para>
/// <para>
/// It is the actual test fixture's responsibility to launch the browser.
/// </para>
/// </summary>
protected override void CreateBrowser()
{
switch (BrowserType)
{
case BrowserTypeEnum.Chrome:
Browser = new ChromeDriver();
break;
case BrowserTypeEnum.Firefox:
Browser = new FirefoxDriver();
break;
case BrowserTypeEnum.InternetExplorer:
Browser = new IEDriver();
break;
default:
break;
}
}
最善の解決策ではないかもしれませんが、私はそれがかなり読みやすいと思いました。別の方法は、Selenium Gridのようなものを使用するか、ドライバーのタイプをNUnitに渡して、次のように直接作成することです。
/// <summary>
/// Tests related to browsing Google
/// </summary>
[TestFixture(typeof(FirefoxDriver))]
public class GoogleTests : AbstractTestFixture
{
}
もう1つの方法は、CIサーバーソリューションを使用する場合、テストに使用するブラウザーを示す構成設定を作成することです。CIドライバーにテストを3回繰り返してもらい、そのたびにその構成設定を編集します。