Maven CI 環境で JS 単体テストを行うための最良の方法を調査してきました。私が現在一緒に石畳になっているのは、私のmavenプロジェクトで次のとおりです。
- qunit リソース (JS/CSS ファイル)
- 必要に応じて html フィクスチャを含む qunit テスト html ファイル (テスト対象のファイルごとに 1 つ)
- ハイパーリンクの順序付きリストとしてテスト html ファイルを参照するインデックス html ファイル
- PhantomJS ランナー ファイル:
- index html ファイルを開き、テスト ファイルのリストを解析します。
- 各テストファイルを開く
- 各ファイルの qunit テスト結果のスクリーンショットを取得します
- 障害が発生した場合は、ステータス「1」で終了します
- 異常が無ければステータス「0」で終了
- phantomjs がインストールされていない場合は「0」で終了し、インストールされている場合は phantomjs テストを呼び出すシェル ファイル
ビルドのテスト段階で phantomjs テストを実行するように pom.xml を変更します。
<plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>1.1</version> <executions> <execution> <id>PhantomJS Unit Testing</id> <phase>test</phase> <goals> <goal>exec</goal> </goals> </execution> </executions> <configuration> <executable>${project.basedir}/src/main/webapp/unittest/phantomcheck</executable> <arguments> <argument>${project.basedir}/src/main/webapp/unittest/qunit-runner.js</argument> <argument>${project.basedir}/src/main/webapp/unittest/tests/index.html</argument> <argument>${project.build.directory}/surefire-reports</argument> </arguments> </configuration> </plugin> </plugins>
したがって、これはうまく機能します。これは、開発マシンとビルド マシンでのビルド中に qunit テストを実行します (PhantomJS がインストールされている限り)。テストはヘッドレス ブラウザ環境で実行され、qunit テストに制限はありません。私が見た他の maven/qunit 統合は、Rhino でテストを実行したり、作成できるテストの種類に制限を課す他の JS 環境が原因で不十分です。さらに、phantomjs を使用すると、テスト実行のスクリーンショットを取得できます。これは、障害のトラブルシューティングに役立ちます。
私のアプローチの欠点は、ビルド/開発マシンに PhantomJS をインストールする必要があることです。開発者が PhantomJS のインストールについて心配する必要がないように、phantomJS を依存関係にバンドルする方法がわかりません。誰かが私にこの方向へのプッシュを与えることができますか? どうすれば始められますか?