我的测试套件中有几个GWTTestCases,我目前正在使用一个用Java编写的自行开发的测试脚本,它运行如下测试:
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静态有关,但我不确定。如果我执行一次运行,我将所有testClasses传递给核心,它们都会通过,然后随后会通过任何单独的测试。
我的猜测是gwt编译并缓存您正在运行的测试,然后根据模块存储它们。但在这种情况下,编译器错过了我的其他测试用例,因为它没有看到对它们的依赖。然后,对于下一个测试,它会返回到缓存,命中它并且无法找到我想要的测试。
关于解决方法的任何想法,而不是一次性通过所有测试?
答案 0 :(得分:1)
我发现的解决方法是首先将所有GWTTestCase类添加到GWTTestSuite,然后可以将其丢弃。此时你不会产生编译成本,但它会以某种方式让GWT意识到所有的测试用例,所以当你编译第一个时......它们都会被编译。
如果你问我,这是一个GWT错误。