我如何为适合Jenkins/Hudson消费的常规测试生成JUnit测试报告?

Sco*_*ish 8 groovy junit unit-testing hudson jenkins

我已经写了几个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)
Run Code Online (Sandbox Code Playgroud)

这产生了这样的东西:

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

OK (4 tests)
Run Code Online (Sandbox Code Playgroud)

我怎样才能创建一个适合Jenkins/Hudson读取的JUnit测试报告xml文件?

我是否需要使用其他JUnit跑步者开始测试?

我已经看到了这个答案,但我想避免编写自己的测试报告输出.

Sco*_*ish 4

经过一番修改后,我采纳了 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"
}
Run Code Online (Sandbox Code Playgroud)

这将应用 Groovy 插件,设置为使用 maven 来获取指定的依赖项,然后向内置的“测试”任务添加一些额外的值。

其中的另一件事是最后一行,它使 Gradle 每次都运行我的所有测试,而不仅仅是它认为是新的/更改的测试,这使得 Jenkins 运行得很好。

我还创建了一个 gradle.properties 文件来通过公司代理/防火墙等:

systemProp.http.proxyHost=10.xxx.xxx.xxx
systemProp.http.proxyPort=8080
systemProp.http.proxyUser=username
systemProp.http.proxyPassword=passwd
Run Code Online (Sandbox Code Playgroud)

这样,我在 Jenkins 中创建了一个“自由式”项目,该项目定期轮询我们的 Mercurial 存储库,并且每当有人向存储库提交更新的 XSL 时,所有测试都会运行。

我最初的目标之一是能够生成标准 Jenkins/Hudson 通过/失败图形和 JUnit 报告,这是成功的:通过JUnit 报告通过/失败

我希望这对有类似要求的其他人有所帮助。