我们正在使用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文件是正确的,因为第二个测试用例如果自己执行就会通过。
是否需要进行任何配置更改才能使第二个测试用例通过,而第一个测试用例仍在执行?
答案 0 :(得分:0)
此问题是由“app”(运行测试的jsTestDriver slave)无法真正并行运行引起的。这是因为它是用javascript编写的,它是单线程的
实现可能会循环所有测试并逐个运行它们,因此,当警报弹出时,整个“app”被阻止,甚至无法向jsTestDriver服务器报告,导致BrowserPanicException中出现超时。
写作Async Tests无济于事,因为整个“app”都被卡住了。