我已经在groovy中编写了几个XMLUnit测试(适合JUnit框架),并且按照groovy doco在命令行上轻松地执行了它们,但是我不太明白我还需要做什么。产生由詹金斯/哈德森(或其他)需要的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,就将运行所有测试。
我的一个既定目标是能够产生标准詹金斯/哈德森合格/不合格图形和JUnit报告,这是成功的:通过/失败与JUnit的报告。
我希望这可以帮助其他有类似要求的人。