2012-12-05 111 views
1

我们正在使用CI构建服务器,其中JS测试驱动程序服务器的同一实例上将并行(异步)执行不同的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执行和挂在警报声明。测试用例2失败并出现异常(BrowserPanicException)。 conf文件是正确的,因为如果第二个测试用例本身执行,它会通过。

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

回答

0

此问题是由“应用程序”(jsTestDriver slave,运行测试)无法真正并行运行引起的。这是因为它是用单线程的javascript编写的。
该实现可能会循环所有测试并逐个运行它们,因此,当警报弹出时,整个“应用程序”被阻止,甚至无法回报给jsTestDriver服务器,从而导致BrowserPanicException中出现超时。
写入Async Tests不会帮助,因为整个“应用程序”卡住了。