15

Dojo DOHユニットテストをJenkinsと統合しようとした人はいますか?

私は次のことをしたいのですが、これがすでに行われている場合は、それを再発明したくありません。だから、私は考えています:

  1. Jenkinsのビルド後のステップからDOHテストを開始し、結果を待ちます
  2. ヘッドレスブラウザ(Crowbarなど)でテスト自体を実行します
  3. Crowbarによって返されたHTMLから成功/エラーカウントを解析します
  4. (a)失敗したテストがある場合にビルドに失敗し、(b)テスト結果をレンダリングし、(c)結果をCIゲームプラグインに統合するJenkinsプラグインを検索(または書き込み)します

質問:

  1. これは以前に行われたことがありますか?
  2. 上記の概要に問題はありますか?
  3. 役立つJenkinsプラグインを知っていますか、それとも自分でプラグインを作成する必要がありますか?
4

3 に答える 3

3

1.自動Dojoテスト-DOH&Selenium-RC(Rob Coup-2008/01/03)

プラン:

  • 起動するブラウザー、ブラウザーが稼働しているマシン、および実行するテストを定義する構成ファイルを用意します。
  • Selenium-RCを介して各ブラウザを起動します
  • 通常のDOHブラウザランナーを介してテストを実行します。
  • Seleniumを使用して、DOHから結果を抽出します。
  • さまざまなブラウザからの結果を照合して、有用なものを作成します。

解決:

  • ドロップseleniumRunner.js, seleniumRunner.config.js, seleniumRunner.sh(または.batWindowsを使用している場合)selenium-java-client-driver.jarして、Dojoインストールのutil /doh/にドロップします。
  • selenium-server.jarテストマシンをjava -jar selenium-server.jar -multiWindowインストールしてから実行し、ブラウザ制御メッセージをリッスンします。
  • 設定に合わせて編集seleniumRunner.config.jsおよび変更browsersrootUrlます。各rootUrlテストマシンから到達可能である必要があります。
  • ワークステーションのutil/doh/./seleniumRunner.sh seleniumRunner.config.jsから実行
  • 構成をロードし、各マシンでブラウザーを起動し、Dojoコアから単体テストを実行し、それぞれの合格/不合格/エラーの統計を出力します。
  • 各ブラウザは、個別のスレッドで開始および監視されます(厳密には必要ではありませんが、実行に抵抗するにはクールすぎます)。

問題:

  • セレンサーバーをマルチウィンドウモードで実行しない限り、SafariとFirefoxは、テストページが読み込まれるたびに印刷ダイアログ(!?!)をポップアップします。ただし、Safariがマルチウィンドウモードの場合、テストページを初期化することはありませんでした。OSXおよびWindowsの場合。ああ。
  • OSX上のOperaは、Seleniumプロキシを適切にセットアップしませんでした(localhost:4444参照用)。
  • dojo.connect()IEは、何らかの理由でseleniumjavascriptコマンドを介して実行することを好みませんでした。

2.私には合理的なようです。

3.JenkinsSeleniumプラグイン

このプラグインは、JenkinsクラスターをSelenium2グリッドクラスターに変換します。これにより、異種のJenkinsクラスターを利用してSeleniumテストを実行できます。このプラグインはターンキーソリューションです。プラグインを機能させるために追加のインストールや構成は必要ありません。プラグインは、すべてのスレーブにSelenium Gridを自動的にインストールし、独自にグリッドを設定します。

于 2012-01-13T02:16:02.447 に答える
2

DOHテストを実行するために、私はciに統合され、ブラウザーを起動できるツールを開発しました。

http://codeblog.bigbrowser.net/dojo-testing-doh-with-continuous-integration/

メイビーあなたもこれを試してみることができます。

ダウンロードする場所と実行方法について説明しました。

于 2012-09-14T15:51:01.150 に答える
1

これが私がHTMLUnitでそれをした方法です。セレンは必要ありません。

これは通常のJUnitテスト(CIサーバーによって簡単に自動的に実行できます)として実行され、テストが失敗した場合はDOHログを出力します。

public class JavascriptTest {

  private static final int MAX_RUNNING_TIME = 10 * 1000;

  //The test runner
  public static final String PATHNAME = "src/main/webapp/library/mystuff/dojo/util/tests/runTests.html";

  //Runs all of the Dojo Objective Harness (D.O.H.) javascript tests.
  //The tests are currently grouped into test modules, and the parent module is "util.tests.module" (in module.js)
  //As you can see in the URL pathname, we pass that module name to the testRunner and it runs all the javascript tests.
  @Test
  public void runAllJavascriptTests() throws Exception {
    final WebClient webClient = new WebClient(BrowserVersion.INTERNET_EXPLORER_8);
    final HtmlPage page = webClient.getPage("file://" + new File(PATHNAME).getAbsolutePath());

    waitForTestsToRun(webClient, page);

    String log = page.getElementById("logBody").asText();
    assertTrue(log, page.asText().contains("WOOHOO!!")); //D.O.H. will display WOOHOO!! if all tests are successful.
  }

  private void waitForTestsToRun(WebClient webClient, HtmlPage page) {
    webClient.waitForBackgroundJavaScript(500);
    int runningTime = 0;
    while(testsAreRunning(page) && runningTime < MAX_RUNNING_TIME){
      webClient.waitForBackgroundJavaScript(500);
      runningTime += 500;
    }
  }

  private boolean testsAreRunning(HtmlPage page) {
    //Check if the "Tests Running" div is visible.
    return "".equals(page.getElementById("playingMsg").getAttribute("style"));
  }

}

以下はrunTests.htmlの内容です。基本的には、テストするディレクトリ内のテストに固有のパラメータを使用して、DOJOテストランナーにリダイレクトするだけです。

これは、物事を構造化するための優れた方法です。あるいは、JUnitテストのPATHNAMEフィールドでこのURLを指定することもできます。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
    <head>
    <title>Dojox Unit Test Runner</title>
      <!--The "testModule" param tells the runner which test module to run-->
      <!--The "paths" param adds our dojo module paths, otherwise it would just look in the default dojo modules for code to test.-->
    <meta http-equiv="REFRESH" content="0;url=../../../../dojo-release-1.7.2-src/util/doh/runner.html?testModule=util.tests.module&paths=util,../../mystuff/dojo/util;mystuff,../../mystuff/dojo"></HEAD>
    <BODY>
        Redirecting to D.O.H runner.
    </BODY>
</HTML> 
于 2012-06-05T03:26:54.340 に答える