2011-02-17 41 views
0

我有一個自動生成腳本,它涉及生產模式下一些GWT模塊的單元測試。看起來,當這些測試運行時,他們重新編譯GWT模塊。在已編譯模塊上運行GWTTestCase

但是,在構建腳本的早些時候,我已經編譯了模塊。這顯然是努力的浪費。有沒有人知道測試GWTTestCase以生產模式運行的任何方式,在已經編譯好的模塊上。

我不介意丟失堆棧跟蹤或任何信息,因爲構建服務器僅告知開發人員哪些測試失敗,並期望他們在自己的環境中進行調試。

回答

0

這將有助於你

在測試基礎設施的主類是JUnitShell。要控制測試執行的方面,您必須將參數傳遞給此類。參數不能直接通過命令行傳遞,因爲正常的命令行參數直接傳遞給JUnit運行器。相反,請定義系統屬性gwt.args以將參數傳遞給JUnitShell。

例如,要在生產模式(即,將它們編譯爲JavaScript時運行測試)運行測試,請在調用JUnit時聲明-Dgwt.args =「 - prod」作爲JVM參數。要獲得支持選項的完整列表,請聲明-Dgwt.args =「 - help」(而不是運行測試,將幫助打印到控制檯)。 在生產模式下運行測試

使用webAppCreator工具時,您可以在開發模式或生產模式下啓動測試。確保在兩種模式下都進行測試 - 儘管很少見,但Java和JavaScript之間有一些差異,可能會導致您的代碼在部署時產生不同的結果。

如果您決定從命令行運行JUnit TestRunner,則必須添加一些其他參數以使您的單元測試在生產模式下運行。默認情況下,在開發模式下運行的測試作爲JVM中的普通Java字節碼運行。要覆蓋此默認行爲,則需要將參數傳遞給JUnitShell

-Dgwt.args =「 - 正式版」

+0

我知道如何在生產代碼上運行它,問題在於,當我已經完成該操作時,它會重新編譯該項目。我想把它指向我已經編譯好的代碼... –

0

好吧,我發現了一個解決方案,但它不是elagant。我修改了JUnitShell.maybeCompileForWebMode方法,您應該添加VM參數-Dcompile=false以防止在運行單元測試時進行編譯。您可以從here獲取JUnitShell的修改版本。