1

我们有 CI 构建服务器,其中不同的 JS 测试用例将在 JS 测试驱动程序服务器的同一实例上并行(异步)执行。测试用例相互独立,不应相互干扰。这可能使用JS测试驱动程序吗?

目前,我已经编写了两个测试用例,只是为了检查这是否可能:

测试用例 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 中添加了 alert 语句,以确保它挂在那里。

我已经使用以下命令启动了 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 在 alert 语句处执行并挂起。测试用例 2 失败并出现异常 (BrowserPanicException)。conf 文件是正确的,因为第二个测试用例如果自行执行则通过。

在第一个测试用例仍在执行时,是否需要进行任何配置更改才能使第二个测试用例通过?

4

1 回答 1

0

这个问题是由“app”(jsTestDriver slave,运行测试)不能真正并行运行它们引起的。这是因为它是用 javascript 编写的,它是单线程的。
该实现可能会循环所有测试并逐个运行它们,因此,当警报弹出时,整个“应用程序”被阻塞,甚至无法向 jsTestDriver 服务器报告,导致超时,表现为 BrowserPanicException。
编写异步测试无济于事,因为整个“应用程序”都被卡住了。

于 2013-01-27T14:48:50.683 回答