2014-03-19 45 views

回答

135

如果您想要測試單個類或使用正則表達式類似gradle -Dtest.single=ClassName*Test test,您可以執行gradle -Dtest.single=ClassUnderTestTest test您可以在測試under this link第23.12節中找到更多用於填充類的示例。測試

+26

最近的版本(從1.10開始)支持'--tests'命令行選項,它被設置爲替換'-DtestTaskName.single'。 –

+48

使用'--test'選項,您還可以將測試限制在測試類中的單個方法。例如: 'gradle test --tests * MyTest.someMethod' 只會在您的MyTest類中運行單個測試'someMethod'。在構建測試用例時,我通常一次只運行一個方法,以便更容易關注僅需要調試的輸出,然後在最後運行整個測試用例。 –

+5

另外值得注意的是,如果你想在一個多模塊項目中運行單個測試,那麼命令是'gradle -D:submodule:test.single = ClassUnderTestTest:submodule:test'。參見[關於gradle的這個討論。org](https://discuss.gradle.org/t/dtest-single-doesnt-work-when-test-tasks-is-in-buildsrc/2485/2) – Bulat

200

要運行單個測試課Airborn的答案很好。

使用一些命令行選項,發現here,你可以簡單地做這樣的事情。

gradle test --tests org.gradle.SomeTest.someSpecificFeature 
gradle test --tests *SomeTest.someSpecificFeature 
gradle test --tests *SomeSpecificTest 
gradle test --tests all.in.specific.package* 
gradle test --tests *IntegTest 
gradle test --tests *IntegTest*ui* 
gradle someTestTask --tests *UiTest someOtherTestTask --tests *WebTest*ui 

從版本1.10開始,它支持使用test filter選擇測試。例如,

+0

過濾器方法可能也可以與任務規則結合使用以進行一些方便的測試選擇 –

50

如果你有一個多模塊項目:

讓我們說你的模塊結構

root-module 
-> a-module 
-> b-module 

和測試(testToRun)你正在尋找運行是在b模塊中,完整路徑:com.xyz.b.module.TestClass.testToRun

由於您在這裏有興趣在b模塊中運行測試,所以您應該看到可用於b模塊的任務。

./gradlew :b-module:tasks 

上述命令將列出帶有說明的b模塊中的所有任務。 在理想情況下,您將有一個名爲測試的任務在該模塊中運行單元測試。

./gradlew :b-module:test 

現在,您已經達到了您在B模塊運行所有測試點,終於可以將參數傳遞給上述任務要運行的特定路徑模式匹配測試

./gradlew :b-module:test --tests "com.xyz.b.module.TestClass.testToRun" 

現在,而不是這個,如果你運行

./gradlew test --tests "com.xyz.b.module.TestClass.testToRun"

它將運行兩個模塊a和b的測試任務,這可能會導致失敗的re與模塊中的上述模式無關。

相關問題