1

JS テスト ドライバー サーバーの同じインスタンスで、異なる JS TestCases を並列 (非同期) に実行する CI ビルド サーバーがあります。テスト ケースは互いに独立しており、互いに干渉してはなりません。これはJSテストドライバーを使用して可能ですか?

現在、これが可能かどうかを確認するために、2 つのテスト ケースを作成しました。

テスト ケース 1:

GreeterTest = TestCase("GreeterTest");

GreeterTest.prototype.testGreet = function() {
  var greeter = new myapp.Greeter();
  alert(“just hang in there”);
  assertEquals("Hello World!", greeter.greet("World"));
};

テスト ケース 2:

GreeterTest = TestCase("GreeterTest");

GreeterTest.prototype.testGreet = function() {
   var greeter = new myapp.Greeter();
   assertEquals("Hello World!", greeter.greet("World"));
};

そこでハングすることを確認するために、テスト ケース 1 にアラート ステートメントを追加しました。

次のコマンドで JS テスト ドライバー サーバーを起動しました。

java --jar JsTestDriver-1.3.5.jar --port 9877 --browser <path to browser exe>

次のように、両方のテスト ケースの実行を開始しています。

java -jar JsTestDriver-1.3.5.jar --tests all --server http://localhost:9877

テスト ケース 1 が実行され、アラート ステートメントでハングします。テスト ケース 2 は例外 (BrowserPanicException) で失敗します。2 番目のテスト ケースが単独で実行された場合に合格するため、conf ファイルは適切です。

最初のテスト ケースがまだ実行されている間に、2 番目のテスト ケースに合格するために必要な構成変更はありますか?

4

1 に答える 1

0

この問題は、「アプリ」 (テストを実行する jsTestDriver スレーブ) が実際には並列で実行できないために発生します。これは、シングル スレッドの JavaScript で記述されているためです。
実装はおそらくすべてのテストをループして 1 つずつ実行するため、アラートが表示されると「アプリ」全体がブロックされ、jsTestDriver サーバーに報告することさえできず、BrowserPanicException でタイムアウトが発生します。「アプリ」全体がスタックしているため、非同期テストを記述しても役に立ちませ

于 2013-01-27T14:48:50.683 に答える