0

Selenium を使用して自動化された UI テストを実行しようとしています。これまでのところ、1 つの関数について、IE、FF、Chrome の少なくとも 3 つのテストを作成しています。

たとえば、関数に対して 、LoginTestFFLoginTestIEの3 つのテストを作成しました。このようにして、VS テスト ビューに 3 つの項目が表示され、それらの 1 つまたはすべてを選択して実行できます。LoginTestChromelogin

Selenium のおかげで、各ブラウザーのテスト コードはほとんど同じです。だから私たちはそれを二度と繰り返したくありません。

次のように VS テスト ビューでテストを表示することは可能ですか。

LoginTestFF
LoginTestIE
LoginTestChrome

1セットのテストコードを使用していますか?

xUnit の [Browser] 属性はOK である必要があることがわかりました。

Visual Studio テスト用にそのような属性を開発するにはどうすればよいですか?

4

2 に答える 2

2

それでも 3 つすべてが VS テスト ビューであることを確認したい場合は、これを試してください。(しかし、10 個の異なるブラウザーがある場合はどうなるでしょうか?)

[TestMethod]
public void LoginTestFF() {
    ExecuteLoginTest();
}

[TestMethod]
public void LoginTestIE() {
    ExecuteLoginTest();
}

[TestMethod]
public void LoginTestChrome() {
    ExecuteLoginTest();
}

public void ExecuteLoginTest() {
    //real test steps
}

すべてのブラウザーでコードを再利用したいだけの場合は、目的のブラウザーを App.config で定義してから、switch case を使用して選択することができます。

<add key="Browser" value="Chrome"/>
IWebDriver driver;
string browser = ConfigurationManager.AppSettings["Browser"];
switch (browser) {
    case "Firefox":
        driver = new FirefoxDriver();
        break;
    case "IE":
        driver = new InterntExplorerDriver();
        break;
    case "Chrome":
        driver = new ChromeDriver();
        break;
    default:
        break;
}
// if this test can only be run against FF and Chrome, add test category to it
[TestMethod, TestCategory("Firefox"), TestCategory("Chrome")]
public void LoginTestTest() {
    //real test steps
}
于 2012-06-06T09:36:15.770 に答える
1

VSの方法がわかりません。

NUnit を使用して、パラメーター化されたテストを使用します。これは、パラメーターをテスト ケースに渡すという考え方です。したがって、LoginFF、LoginIE、LoginChrome の代わりに、次のようなものがあります。

[TestCase(Browser.IE)]
[TestCase(Browser.Firefox)]
[TestCase(Browser.Chrome)]
public void TestLogin(Browser browser)
{
    // test stuff
}

これにより、指定したテスト ケースのソース属性ごとにテストが繰り返されます。これは、ブラウザーの種類ごとにテスト メソッドをコピーして貼り付けるよりも優れています。

私の例では、Resharper、JustCode、または任意の NUnit テスト ランナーと組み合わせると、VS でテストが 3 回表示されます。

于 2012-06-06T09:09:58.490 に答える