在JS测试驱动程序中异步执行测试用例

时间:2012-12-05 07:52:28

标签: testing asynchronous case execution js-test-driver

我们正在使用CI构建服务器,其中不同的JS TestCases将在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中添加了警告语句,以确保它在那里挂起。

我使用以下命令启动了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文件是正确的,因为第二个测试用例如果自己执行就会通过。

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

1 个答案:

答案 0 :(得分:0)

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