运行GWT 2.4测试随着JUnitCore

问题描述:

我在我的测试套件几个GWTTestCases,目前我使用它用Java编写的自产自销的测试脚本,运行测试如下:运行GWT 2.4测试随着JUnitCore

for(Class<?> testClass : allTestClasses) { 
    final JUnitCore core = new JUnitCore(); 
    final Result result = core.run(testClass); 
} 

现在,第一GWT测试将通过,所有后续测试将失败。首先运行哪个测试并不重要,我可以从命令行成功运行测试。

通过日志看,具体的错误通常是这样的:

java.lang.RuntimeException: deepthought.test.JUnit:package.GwtTestCaseClass.testMethod: could not instantiate the requested class 

我认为这是与GWTTestCase静止状态,但我不确定。如果我做了一个运行,我将所有的测试类传递给了核心,它们都通过了,然后任何单独的测试都会通过。

我的猜测是gwt编译并缓存了正在运行的测试,然后根据模块存储它们。但在这种情况下,编译器错过了我的其他测试用例,因为它没有看到它们的依赖关系。然后在下一次测试中,它会回到缓存,点击它并且无法找到我想要的测试。

解决方法的任何想法,除了一次通过所有的测试?

我发现的解决方法是首先将所有GWTTestCase类添加到GWTTestSuite,然后您可以扔掉它。这一点你不会承担编译的代价,但它不知何故使得GWT知道所有的测试用例,所以当你编译第一个测试用例时......他们都被编译。

如果你问我,这是一个GWT错误。

+0

http://code.google.com/p/google-web-toolkit/issues/detail?id=5138 –