2014-01-08 48 views
0

當我嘗試使用Gradle和Java將測試包含在TestNG中運行時,我遇到了一些問題。排除測試組沒有任何問題,但如果我沒有指定排除組並嘗試僅使用include include語句,則其他測試也會運行。在TestNG和Gradle中包含(不包括)組

我的搖籃碼是這樣的:

tasks.withType(Test) { 
    maxParallelForks = 1 
    forkEvery = 1000 
    ignoreFailures = false 

    systemProperties = System.getProperties() 

    testLogging.showStandardStreams = true 

    exclude '**/tasks/' 

    classpath += configurations.testCompile 
} 

包括例如:

排除例子;完美的作品:

task firefox(type: Test) { 
    maxParallelForks = Integer.valueOf(threadCount) //default is 1 if not specified 
    testLogging.events "started" 
    testLogging { 
     events "started", "passed", "skipped", "failed", "standardOut", "standardError" 
     exceptionFormat "full" // default is "short" 
    } 
    useTestNG() { 
     excludeGroups 'chrome', 'broken' 
     useDefaultListeners = false 
     listeners << 'org.uncommons.reportng.HTMLReporter' 
     listeners << 'org.uncommons.reportng.JUnitXMLReporter' 
     listeners << 'com.xmatters.testng.Listener' 
    } 

    reports.junitXml.destination = file("${buildDir}/test-results/firefox") 
    reports.html.destination = file("${reporting.baseDir}/firefox") 

    systemProperties.BROWSER = System.getProperty('BROWSER', 'firefox') 
    exclude '**/selenium/' 
    exclude '**/setupscripts/' 
} 

這是一個給我麻煩的人。它包括對msie羣組中的人員進行的未分組測試。

task internetExplorer(type: Test) { 
    testLogging { 
     events "started", "passed", "skipped", "failed", "standardOut", "standardError" 
     exceptionFormat "full" 
    } 
    useTestNG() { 
     includeGroups 'msie' 
     useDefaultListeners = false 
     listeners << 'org.uncommons.reportng.HTMLReporter' 
     listeners << 'org.uncommons.reportng.JUnitXMLReporter' 
     listeners << 'com.xmatters.testng.Listener' 
    } 
    reports.junitXml.destination = file("${reporting.baseDir}/internetExplorer") 
    reports.html.destination = file("${buildDir}/test-results/internetExplorer") 

    systemProperties.BROWSER = System.getProperty('BROWSER', 'internetExplorer') 

    exclude '**/selenium/' 
    exclude '**/setupscripts/ 

任何幫助或想法將是巨大的。

+0

可能是一個錯誤。你有沒有搜索http://issues.gradle.org? –

+0

只是簡單地說,我會給它一個更徹底的外觀,看看我能否找到任何相關的東西。 –

回答

1

看來您並沒有使用Gradle TestNG插件的「parallel」和「threadcount」選項。相反,你是從Gradle核心中分離出來的。再看看這個:http://www.gradle.org/docs/current/groovydoc/org/gradle/api/tasks/testing/testng/TestNGOptions.html

+0

我的印象是使用'parallel'特性是在maxParallelForks'在任務級別上運行的項目級別上。我一次只運行一個任務(有多個測試)。 –

+2

'useTestNG {parallel = ...; threadCount = ...; }'是TestNG功能在多個線程(一個JVM)中執行測試。 'test.maxParallelForks'是在多個JVM(每個JVM一個線程)中執行(JUnit或TestNG)測試的通用Gradle功能。 '--parallel'是並行運行任務的通用Gradle功能。 (目前,只有來自不同項目的任務可以並行運行。) –

+0

@PeterNiederwieser有趣的是,這可能會解決一個自定義的偵聽器問題,如果測試確實在一個JVM中運行,就會遇到這種問題。當'maxParallelForks'已經就位時,我接受了這個項目,所以我認爲這是以這種方式完成的原因;也許不是。我會放棄它。謝謝你的提示!不幸的是,仍然不滿意包括團隊。似乎已經提出了一些有關此問題的缺陷報告,但對於它們是經過驗證的錯誤還是隻是配置問題,沒有任何確鑿的結論。 –