xUnit dotnet test CLi 输出到 NUnit xml 以便 Bamboo 可以读取结果
Posted
技术标签:
【中文标题】xUnit dotnet test CLi 输出到 NUnit xml 以便 Bamboo 可以读取结果【英文标题】:xUnit dotnet test CLi to output to NUnit xml so that Bamboo can read the results 【发布时间】:2017-01-25 08:02:06 【问题描述】:我们正在启动一个新的 .net 核心项目,我们只是设置 Bamboo 来构建我们的项目并运行测试,所以我的问题是:
有没有办法我们可以使用 xunit dotnet test CLi 测试运行器以 NUnit 格式输出?
目前我们有:“dotnet test -xml TestResults.xml”来运行我们的测试,效果很好,但我们无法在 Bamboo 中获得结果。
或者有没有人可以为我们提供替代方案?
【问题讨论】:
看能不能让 Bamboo 直接支持 xUnit.net,或者想办法扩展它,或者将 xUnit.net 输出转换为 NUnit 格式,这更多是你自己的责任。跨度> Bamboo 不直接支持 xUnit,在 .net 4.x 中使用 MSBuild 您可以让 xUnit 输出为竹子可以读取的 NUnit 格式。而且我看不到新的 dotnet 测试 CLi 不再具有此功能/但除非我错过了它,这是可能的,因为所有选项似乎尚未发布(即 -xml) 【参考方案1】:对于那些感兴趣的人,.NET Core SDK 2.0 not longer supports the -xml
option,但它确实支持--logger
,可用于选择特定的输出格式,包括 Bamboo 支持的 MSTest (.trx)。
调用示例:
dotnet test --logger "trx;LogFileName=abc.trx"
注意:abc.trx
可以是相对路径或绝对路径,包括省略号。
【讨论】:
【参考方案2】:我创建了一个用于解析竹子中的 xunit 结果的插件,并在 atlassian 市场上发布。
它应该支持 xunit 的 v1、v2 和 dotnet 测试输出。
https://marketplace.atlassian.com/plugins/com.wwwlicious.xunit.xunit/server/overview
希望这会有所帮助。
【讨论】:
【参考方案3】:对于任何对此感兴趣并感兴趣的人。我在 xUnit 的 github 上发布了这个问题:https://github.com/xunit/xunit/issues/977,并提到了另一个要在这里发布的问题:https://github.com/dotnet/corefx/issues/5593
我还没有确认 NUint 输出格式确实会发布,但我想我还是会发布它。
【讨论】:
【参考方案4】:编辑
抱歉,我错过了您提到的 .net core。
虽然没有记录,apparently 您可以将-xml filename.xml
传递给dotnet test
,这将输出 xUnit v1 XML。不幸的是,dotnet-test-xunit 不支持将该输出转换为 NUnit 格式,但 xunit 确实维护了一个 XSL transform 来做到这一点。
原答案
假设您使用的是 xunit.runner.console,您可以简单地运行:
xunit.console.exe Assembly.dll -nunit test-results.xml
然后使用 Bamboo 的 NUnit 解析器来处理结果。
【讨论】:
不幸的是,只有这么简单。使用 .net 核心,我似乎无法在构建服务器上运行该命令,因为 xunit.console.exe 不存在,即使我的应用程序中安装了 nuget 包。 .net core 中的所有 nuget 包似乎都隐藏在某个地方,因此即使在 bin 文件夹中也找不到任何程序集。 谢谢,但根据我原来的帖子,我们已经在使用 -xml 选项,但它以 xUnit 格式输出,没有 NUnit 格式。 @Brendan 好点,抱歉。看起来 netcore runner 没有内置任何东西,但是有一个 XSLT 可以用来自己转换它(请参阅更新的答案)。以上是关于xUnit dotnet test CLi 输出到 NUnit xml 以便 Bamboo 可以读取结果的主要内容,如果未能解决你的问题,请参考以下文章
GitHub的dotnet core CI实践(.net core + xUnit + OpenCover + Appveyor + Coveralls.net)