【发布时间】:2016-09-28 12:04:20
【问题描述】:
我刚刚用了一天的大部分时间来解决这个问题。
这是问题所在:习惯于在 Bamboo 中使用 MSTest,它工作正常。
第一个使用 Asp.Net.Core 的项目出现了,带有 XUnit 测试,需要在 Bamboo 中进行设置。
Bamboo 不支持 XUnit 测试结果 xml 文件.. 唉...
怎么办?
【问题讨论】:
我刚刚用了一天的大部分时间来解决这个问题。
这是问题所在:习惯于在 Bamboo 中使用 MSTest,它工作正常。
第一个使用 Asp.Net.Core 的项目出现了,带有 XUnit 测试,需要在 Bamboo 中进行设置。
Bamboo 不支持 XUnit 测试结果 xml 文件.. 唉...
怎么办?
【问题讨论】:
升级到 .Net Core SDK 1.1.1 最终版本后,这更容易实现。
执行下面会执行测试,并生成一个trx输出。
dotnet test --logger trx
也可以确定文件名
dotnet test --logger "trx;LogFileName=myTestResults.trx"
【讨论】:
经过大量的摆弄,这是我使用的食谱。
照常执行测试,输出结果到xml文件
dotnet test .\MyProject\test\UnitTests -xml .\TestResults\UnitTests.xml
通过 XSLT 转换运行输出 xml 并转换为 MsTest trx 格式
$xml = Process-XSLT $PSScriptRoot\TestResults\UnitTests.xml $PSScriptRoot\BuildScripts\XUnitToMsTest.xlst
罪魁祸首来了。确保将 TRX xml 文件写入为 UTF-8 - 而不是 ascii 文件。尝试了几个小时来弄清楚为什么 Bamboo 不会提取测试文件 - 直到我意识到这一点。
Out-File -FilePath $PSScriptRoot\TestResults\UnitTests.trx -InputObject $xml -Encoding UTF8
来源:
XUnit 到 TRX:https://github.com/deloitte-solvas/XSLT-xUnit-To-Trx
ProcessXSLT : https://gist.github.com/wschwarz/5073004(有一些错误)
我自己的 ProcessXSLT 的整个源代码:
function Process-XSLT([string]$inputFile, [string]$xsl)
{
$fileStream = New-Object -TypeName System.IO.FileStream($inputFile, [System.IO.FileMode]::Open, [System.IO.FileAccess]::Read);
$fileStream.position = 0
$xml = new-object System.Xml.XmlTextReader($fileStream)
$output = New-Object System.IO.MemoryStream
$xslt = New-Object System.Xml.Xsl.XslCompiledTransform
$arglist = new-object System.Xml.Xsl.XsltArgumentList
$reader = new-object System.IO.StreamReader($output)
$xslt.Load($xsl)
$xslt.Transform($xml, $arglist, $output)
$output.position = 0
$transformed = [string]$reader.ReadToEnd()
$reader.Close()
return $transformed
}
当上述所有操作都正确完成后,剩下要做的就是将 MSTest Parser 任务添加到您的 Bamboo 构建中,指向 TestResults 文件夹。
https://confluence.atlassian.com/bamboo/mstest-parser-289277057.html
我希望我能用这篇文章为别人节省几分钟。
Bamboo 绝对不会告诉我文件无效 - 它只是表示无法获取任何结果。 :-)
最好的问候 /安德斯
【讨论】: