2010-05-25 30 views
9

快速運行單一集成測試是否有可能很快在一類快速Grails的運行單曲/全部集成測試。該測試應用程序與所有編譯的文件和生成的Cobertura報告,因此,即使我們運行一個集成測試的結算沉重的行李,整個代碼庫進行編譯,儀表,並且正在生成的Cobertura報告。對於我們的應用程序,這需要2分鐘以上。Grails中

如果可以快速運行一個集成測試並獲得快速反饋,這將非常有幫助。

另外,一旦測試完成,清理所有編譯的文件是否很重要?這種清洗是好的,如果我們運行一整套集成測試的,但如果我們要運行在一個類的一個或兩個測試這種清洗和重新編譯似乎是更快的反饋給開發商的一大瓶頸。

感謝

回答

5

它是集成測試的意圖做這整個編譯,數據的基礎上創建,服務器啓動,等等,因爲測試應該在集成環境中運行,顧名思義。

也許你可以提取一些測試到單元測試。這些你可以在Eclipse中運行。

您可以通過將下面的代碼在你的grails-app/conf目錄/ BuildConfig.groovy關閉的Cobertura:

coverage { 
    enabledByDefault = false 
} 
+0

的的Cobertura逸岸出現了問題。我們使用cobertura插件,插件在生成報表後清理了所有編譯的源代碼,這使我們無法利用與增量編譯相關的所有好處。此外,運行一個或兩個測試並不需要爲我們提供全面的cobertura報告,並且一旦我們禁用了它,集成測試就會很快運行。感謝指針。 – Prakash 2010-05-27 05:05:20

15

如果你有一個集成測試類

class SimpleControllerTests extends GrailsUnitTestCase { 
    public void testLogin() {} 
    public void testLogin2() {} 
    public void testLogin3() {} 
} 

您可以運行只有一個測試在這個類中使用:

grails test-app integration: SimpleController.testLogin 

但是,您仍然必須承擔ti我需要進行集成測試(加載配置,連接到數據庫,實例化Spring beans等)所需的處罰

如果您希望測試快速運行,那麼請嘗試編寫單元測試而不是集成測試。

+0

正在運行的一個測試示例適用於,只需要該類的完整路徑 – 2010-10-04 15:19:19

0

就像你所說的,大部分時間都是設置應用程序環境,注入bean並執行動態類註解。通過在grails REPL中運行測試,您只需加載一次即可加快集成測試周期。

但是,權衡是在REPL中存在動態重新加載問題。如果您看到隨機怪異,請退出REPL並重新加載。

$> ./grailsw --plain-output 
|Loading Grails 2.5.3 
|Configuring classpath 
|Enter a script name to run. Use TAB for completion: 
grails> test-app -integration 
... (loads some things) 
... 
grails> test-app -integration 
... (faster loading) 

而回復的其他評論者 - 集成測試也是有用的,具有一定的代碼不能用一個單元測試(例如,測試HQL或SQL查詢)進行測試。