簡體   English   中英

我如何為適合Jenkins / Hudson消費的常規測試生成JUnit測試報告?

[英]How would I produce JUnit test report for groovy tests, suitable for consumption by Jenkins/Hudson?

我已經寫了幾個XMLUnit測試測試(適合在JUnit框架)的常規,可以在命令行上按易執行這些常規DOCO但我不太明白我得為它做還有什么生成Jenkins / Hudson(或其他)所需的xml輸出,以顯示通過/失敗結果( 如此 )和錯誤的詳細報告等( 如此 )。 (向圖片所有者道歉)

目前,我的啟動腳本是這樣的:

def allSuite = new TestSuite('The XSL Tests')

//looking in package xsltests.rail.*
allSuite.addTest(AllTestSuite.suite("xsltests/rail", "*Tests.groovy")) 

junit.textui.TestRunner.run(allSuite)

這產生了這樣的東西:

Running all XSL Tests...
....
Time: 4.141

OK (4 tests)

我怎樣才能創建一個適合Jenkins / Hudson讀取的JUnit測試報告xml文件?

我是否需要使用其他JUnit跑步者開始測試?

我已經看到了這個答案,但我想避免編寫自己的測試報告輸出。

經過一段時間的討論后,我采取了Eric Wendelin的建議,然后選擇了Gradle。

為此,我將我的groovy單元測試移動到必需的目錄結構src / test / groovy /中,支持資源(輸入和預期的輸出XML文件)進入/ src / test / resources /目錄。

已在build.gradle文件中配置了所有必需的庫,如下所述(完整地):

apply plugin: 'groovy'

repositories {
    mavenCentral()
}

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.+'

    groovy module('org.codehaus.groovy:groovy:1.8.2') {
        dependency('asm:asm:3.3.1')
        dependency('antlr:antlr:2.7.7')
        dependency('xmlunit:xmlunit:1.3')
        dependency('xalan:serializer:2.7.1')
        dependency('xalan:xalan:2.7.1')
        dependency('org.bluestemsoftware.open.maven.tparty:xerces-impl:2.9.0')
        dependency('xml-apis:xml-apis:2.0.2')
    }
}

test {
    jvmArgs '-Xms64m', '-Xmx512m', '-XX:MaxPermSize=128m'

    testLogging.showStandardStreams = true //not sure about this one, was in official user guide

    outputs.upToDateWhen { false } //makes it run every time even when Gradle thinks it is "Up-To-Date"
}

這適用於Groovy插件,設置為使用maven來獲取指定的依賴項,然后為內置的“test”任務添加一些額外的值。

還有一件事是最后一行讓Gradle每次都運行我的所有測試,而不僅僅是它認為是新的/改變的,這使Jenkins發揮得很好。

我還創建了一個gradle.properties文件來通過公司代理/防火牆等:

systemProp.http.proxyHost=10.xxx.xxx.xxx
systemProp.http.proxyPort=8080
systemProp.http.proxyUser=username
systemProp.http.proxyPassword=passwd

有了這個,我在Jenkins中創建了一個“自由風格”項目,定期輪詢我們的Mercurial倉庫,每當有人向倉庫提交更新的XSL時,所有測試都將運行。

我最初的目標之一是能夠生成標准的Jenkins / Hudson通過/失敗圖形和JUnit報告,這是成功的:使用JUnit報告 通過/失敗

我希望這有助於其他有類似要求的人。

我發現引導這個東西的最快方法是使用Gradle

# build.gradle
apply plugin: 'groovy'

task initProjectStructure () << {
    project.sourceSets.all*.allSource.sourceTrees.srcDirs.flatten().each { dir ->
        dir.mkdirs()
    }
}

然后運行gradle initProjectStructure並將源移動到src/main/groovy並測試test/main/groovy

它似乎很多(實際上它是<5分鍾的工作),但你可以免費獲得很多東西。 現在您可以運行gradle test ,它將運行您的測試並生成可在項目目錄中的build/test-reports中使用的JUnit XML。

由於您要求將報告公開給Jenkins / Hudson,我假設您有一個Maven / Ant / etc構建,您可以運行。 如果這是真的,解決方案很簡單。

首先,Groovy和Java JUnit測試之間幾乎沒有區別。 因此,您需要做的就是將Ant / Maven junit任務/插件添加到您的構建中並讓它執行您的Groovy junit測試(就像您用Java編寫的那樣)。 該執行將創建測試報告。 從那里,您可以簡單地配置您的Hudson / Jenkins構建,以查看在構建過程中創建測試報告的目錄。

您可以編寫自己的自定義RunListener (或SuiteRunListener )。 它仍然需要你編寫一些代碼,但它比你提供鏈接的腳本要干凈得多。 如果您願意,我可以向您發送一個JUnit記者的代碼,我用JavaScript編寫了Jasmine ,您可以將其“翻譯”為Groovy。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM