0

我正在开发一个使用 GWT 和 GXT 并进行大量单元测试的 Web 应用程序。在生产模式之外运行测试可以正常工作。一旦我尝试在生产模式下执行 GWT 测试用例(或为超过 1 个浏览器编译),我就会收到以下错误:

com.google.gwt.junit.client.TimeoutException  
message="The browser did not contact the server within 60000ms. - 1 client(s) haven't responded back to JUnitShell since the start of the test. Actual time elapsed: 60.008 seconds. 
Try increasing this timeout using the '-testBeginTimeout minutes' option The default value of minutes is 1, i.e., the server waits 1 minute or 60 seconds. ">
com.google.gwt.junit.client.TimeoutException: The browser did not contact the server within 60000ms. - 1 client(s) haven't responded back to JUnitShell since the start of the test. 
Actual time elapsed: 60.008 seconds. Try increasing this timeout using the '-testBeginTimeout minutes' option The default value of minutes is 1, i.e., the server waits 1 minute or 60 seconds.   
at com.google.gwt.junit.JUnitShell.notDone(JUnitShell.java:1041)   
at com.google.gwt.junit.JUnitShell.runTestImpl(JUnitShell.java:1376)   
at com.google.gwt.junit.JUnitShell.runTestImpl(JUnitShell.java:1304)  
at com.google.gwt.junit.JUnitShell.runTest(JUnitShell.java:652)  
at com.google.gwt.junit.client.GWTTestCase.runTest(GWTTestCase.java:441) 
at com.google.gwt.junit.client.GWTTestCase.run(GWTTestCase.java:296)  

同样,如果没有生产模式设置(并且只为一个浏览器编译),GWT 测试工作正常,当使用附加参数执行测试时(或为多个浏览器编译时),问题就会出现:

<sysproperty key="gwt.args" value="-prod -standardsMode -logLevel WARN" />  
<sysproperty key="java.awt.headless" value="true" />

我尝试在开始测试之前增加超时(-testBeginTimeout),结果相似(唯一的区别是失败前的延迟更长)。在执行具有相同结果的测试时,我还尝试增加超时之前的等待时间。

如上所述,在为多个浏览器编译后尝试运行 GWTTestCase 测试时也会出现此问题。我在解释这两个问题时有点不知所措,随后的谷歌搜索未能找到任何有用的信息。

这似乎是一个配置问题,无论是使用 GWT 还是我的 ANT 设置,但我似乎无法进一步缩小范围。有没有其他人遇到过这个问题并对我有一些急需的建议?

单浏览器编译:chrome
多浏览器编译:chrome,gecko1_8,ie8

库:
GWT 版本:2.5.0rc1
GXT 版本:3.0.0b
Junit 版本:4.11(也试过 4.10)

4

1 回答 1

0

事实证明,在 gwt.xml 文件中指定“gxt.user.agent”属性是一个问题。通过指定 GWT 的“user.agent”属性,我现在能够针对多个浏览器进行编译并执行我的测试,而不会导致 GWTTestCase 测试无法从浏览器获取连接。

于 2013-01-16T15:01:12.777 回答