0

私は現在、Wisdom フレームワークをバックエンドとして使用して、 Angular チュートリアルを受講しています。その結果、知恵フレームワークのドキュメントに記載されているように、 Fluentleniumを使用してエンドツーエンドのテストを実行します。

ステップ 3 のテストは非常に単純ですが、合格しません。

完全なテストは github にあります: Step03IsImplementedIT

ただし、ここに問題の抜粋があります(30行目あたり)

@Test
public void canTestPageCorrectly() {
    if (getDriver() instanceof HtmlUnitDriver) {
        HtmlUnitDriver driver = (HtmlUnitDriver) getDriver();
        if(!driver.isJavascriptEnabled()) {
            driver.setJavascriptEnabled(true);
        }
        Assert.assertTrue("Javascript should be enabled for Angular to work !", driver.isJavascriptEnabled());
    }
    goTo(GoogleShopController.LIST);
    // Et on charge la liste des téléphones
    FluentWebElement phones = findFirst(".phones");
    assertThat(phones).isDisplayed();

    FluentList<FluentWebElement> items = find(".phone");
    assertThat(items).hasSize(3); // <-- this is the assert that fails
}

失敗メッセージ:

canTestPageCorrectly(org.ndx.wisdom.tutorial.angular.Step03IsImplementedIT)  Time elapsed: 2.924 sec  <<< FAILURE!
java.lang.AssertionError: Expected size: 3. Actual size: 1.
    at org.fluentlenium.assertj.custom.FluentListAssert.hasSize(FluentListAssert.java:60)
    at org.ndx.wisdom.tutorial.angular.Step03IsImplementedIT.canTestPageCorrectly(Step03IsImplementedIT.java:33)

その失敗から、角度コントローラーがロードされていなかったと思います。

それらが であることをどのように確認できますか? そして、どうすれば動作テストを行うことができますか?

4

1 に答える 1

0

エラーは予期したものではなかったことが判明しました...まあ、そうでしたが、隠された方法でした.

HtmlUnitDriverはご存知かもしれませんが、ブラウザの純粋な Java 実装であるため、いくつかの制限があります。

その制限の 1 つは Javascript の解釈です。

長いことを短くするために、それを修正する最も簡単な方法は、デフォルトのドライバーをFirefoxのものに置き換えることです。

  • fluentlenium.browserに設定firefox
  • テストの最初に小さなアサートを追加して、ドライバーが正しく読み込まれることを確認します (ドライバーfirefox.exeを使用しようとするときにパス上にある必要があるため)。

ファイナルテストはその後

    assertThat(getDriver()).isInstanceOf(FirefoxDriver.class);
    goTo(GoogleShopController.LIST);
    FluentList<FluentWebElement> items = find("li");
    FluentLeniumAssertions.assertThat(items).hasSize(3);
    fill("input").with("nexus");
    await();
    items = find(".phone");
    FluentLeniumAssertions.assertThat(items).hasSize(1);
    fill("input").with("motorola");
    await();
    items = find(".phone");
    FluentLeniumAssertions.assertThat(items).hasSize(2);
于 2014-07-09T12:08:32.373 に答える