2012-11-30 139 views
3

我們的測試套件正在快速增長,並且我們已經達到了更多功能測試依賴於其他系統的程度。使用gradle定製JUnit測試檢測

我們使用gradle測試任務來使用include和exclude過濾器來運行這些測試,但這變得很麻煩,因爲我們必須以特定的方式命名我們的測試。

我們目前的做法是命名我們的測試通過以下方式:

class AppleSingleServiceTest {} 
class BananaMultiServiceTest {} 
class KiwiIntegrationTest {} 

,然後包括在相關任務測試使用

include '**/*SingleServiceTest.class' 
include '**/*MultiServiceTest.class' 
include '**/*IntegrationTest.class' 

是否有可能找到測試類中gradle這個由看註釋?

@SingleServiceTest 
public class AppleTest {} 

我認爲沒有註釋然後將照常運行單元測試的任何測試,所以如果你忘了註釋功能更強大的測試將會失敗

單一的服務測試的一個例子是其中SUT的任何外部依賴性存根

多服務測試的一個例子硒測試是其中一些,但也許不是所有的外部依賴性不掐滅

+2

雖然這不完全是你要求的,但我認爲這個問題可以通過在不同文件夾中放置不同類型的測試來解決。我們就是這麼做的。 JUnit支持使用['@ Category'註釋](http://stackoverflow.com/questions/2176570/how-to-run-all-tests-belonging-to-a-certain-category-in-junit- 4)。這是[尚未支持gradle](http://issues.gradle.org/browse/GRADLE-2111),但你可能能夠解決一些問題。 –

+1

「@ Category」旨在與JUnit套件一起使用。 (是的,我知道這很麻煩)。據我所知,JUnit不提供任何其他方法來按類別過濾。當然,Gradle可以實現自己的基於註釋的過濾方法,類似於Maven所做的。 –

+0

@David這是一種可能性,我們可能會嘗試它;我的首選是指出它對某些元信息(註釋)的測試類型,並將測試的位置留給開發人員(我們目前使用maven樣式的項目結構) –

回答

1

該功能你是問for目前不存在,但您可以在http://forums.gradle.org處發出功能請求。或者您可以使用(繁瑣的)JUnit @Category,這需要您定義測試套件。

+0

回答這個問題並提供一個替代方案(就像@DavidParsson一樣)。投了! –

5

作爲Gradle 1.6,搖籃支持用JUnit @Category選擇的測試中,是這樣的:

test { 
    useJUnit { 
     includeCategories 'org.gradle.junit.CategoryA' 
     excludeCategories 'org.gradle.junit.CategoryB' 
    } 
} 

更多細節可以在the docs找到。

+0

我們已經在使用它了,謝謝你的支持。 –

0

我有類似的需求來過濾測試與註釋。我最終設法創建了一個解決方案。它張貼於here