2016-09-29 61 views

回答

1

官方的命令行語法爲grails test-app,任選隨後進行模式匹配,你要測試,如org.myorg.ClassToTestorg.**.*-unit-integration選擇特定的階段是什麼完整的命名空間中的類名。請參閱docs。但是,在Grails 3.1.10中有一些怪癖。

1)grails test-app不會永遠運行測試,可能是在依賴管理的錯誤。如果您第一次刪除build/reports/tests/index.html的測試報告,grails會發現它實際上需要做一些事情來生成新報告。

2)有時候事情會隨機地變得怪異。如果是這樣,請執行grails clean; grails test clean。 (我還不弄清楚,如果你真的需要他們兩個或僅兩個中的一個)。

3)的正式方法應該可行,但這樣做(2)第一,如果它沒有。此外,如果您只想運行特定的集成測試,則需要添加-integration,否則您會收到錯誤消息。我認爲,如果沒有這樣的標誌,Grails無條件地首先嚐試運行單元測試,然後進行集成測試,如果測試模式與單元測試不匹配,那麼Grails將會出錯。同樣,如果模式只匹配單元測試,請添加-unit,否則您會收到錯誤消息,雖然在這種情況下仍然會得到正確的測試報告。

4)還有另一種方法,通過使用-Dtest.single=<classname>標誌。這設置了一個由gradle拾取的系統屬性。如果我還添加了-unit標誌,我只能正常工作,但我沒有深入調查過。

0

我通常使用註釋@IgnoreRest。請記住import spock.lang.IgnoreRest並對指定的類運行測試。

2

下面是一個簡單的命令來運行一個單一的集成測試

grails test-app *LoginFunctional* -integration 

如果你把 - 整合國旗圖案之前,測試-app命令將忽略模式,並執行所有的集成測試。

+0

最近這讓我瘋狂。謝謝。 – Lithium

相關問題