Jenkins工作流和NUnit测试结果

4

我目前正在使用Jenkins工作流,这个项目正在生成NUnit测试结果。

我尝试使用一个简单的构建步骤来归档这些测试结果。

step([$class: "JUnitResultArchiver", artifacts: "Test-Results/**/*.*"])

很不幸,JUnit存档程序似乎无法解析由nunit-console生成的XML,它输出文件不包含任何结果。我猜测这是因为JUnit和NUnit在XML架构方面存在差异(我可能应该意识到这一点)。
Jenkins NUnit插件可以解析该文件,但似乎该插件尚未实现用于与工作流一起使用所需的简单构建步骤。
有人发现了使其正常工作的方法吗?还是我们必须等待NUnit插件成为工作流友好型?
3个回答

2

使用以下命令转换nunit结果文件"TestResult.xml"。

bat '"h:\\tools\\msxsl.exe" "TestResult.xml" "nunit-to-junit.xsl" -o JUnitLikeNunitResults.xml'

你可以从MS网站下载"msxsl.exe",对于"nunit-to-junit.xsl",你可以从nunit测试发布插件 for jenkins source code中获取。

完成后,使用step([$class: 'JUnitResultArchiver', allowEmptyResults: true, testResults: 'JUnitLikeNunitResults.xml'])步骤进行发布。


我建议使用NUnit 3内置的转换--OPTION:filename;format=formatname,该转换在https://github.com/nunit/docs/wiki/Console-Command-Line中有描述。 - GKalnytskyi

1
我在生成单元测试报告时使用了nunit3-xunit transform,然后能够在管道插件中使用junit发布步骤。

这个XSLT规范很棒,它可以与nunit3-console的结果/转换选项原生地配合使用。最终得到了一个命令,如'nunit3-console.exe someproj.csproj --config=Debug --result="artifacts\test-result.xml;transform=nunit3-junit.xslt"'。请注意,需要在“result”选项周围加上引号,否则PowerShell会将其解释为两个命令,因为有分号。我实际上使用的是Gitlab而不是Jenkins,但这个答案也在那个平台上运行良好。 - Khoward

0

除非 NUnit 本身可以配置为生成 JUnit 风格的输出(我不知道),或者您可以手动翻译结果,否则您需要等待工作流兼容 NUnit(和/或更通用的 XUnit)插件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接