2011-11-02 69 views
0

我在我的測試套件幾個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編譯並緩存了正在運行的測試,然後根據模塊存儲它們。但在這種情況下,編譯器錯過了我的其他測試用例,因爲它沒有看到它們的依賴關係。然後在下一次測試中,它會回到緩存,點擊它並且無法找到我想要的測試。

解決方法的任何想法,除了一次通過所有的測試?

回答

1

我發現的解決方法是首先將所有GWTTestCase類添加到GWTTestSuite,然後您可以扔掉它。這一點你不會承擔編譯的代價,但它不知何故使得GWT知道所有的測試用例,所以當你編譯第一個測試用例時......他們都被編譯。

如果你問我,這是一個GWT錯誤。

+0

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