在 Bamboo 中显示 Asp.Net.Core XUnit 测试结果

Showing Asp.Net.Core XUnit test results in Bamboo

我刚刚花了一天的大部分时间来解决这个问题。

问题出在这里:习惯于在 Bamboo 中使用 MSTest,它工作正常。

第一个使用 Asp.Net.Core 的项目,带有 XUnit 测试,需要在 Bamboo 中设置。

Bamboo 不支持 XUnit 测试结果 xml 个文件..唉...

怎么办?

经过大量摆弄后,这里是我使用的食谱。

照常执行测试,输出结果到xml文件

dotnet test .\MyProject\test\UnitTests -xml .\TestResults\UnitTests.xml

运行输出xml通过XSLT转换并转换为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

我希望我用这个 post 可以为其他人节省几分钟。

Bamboo 绝对没有告诉我文件无效 - 它只是说无法获取任何结果。 :-)

此致 /安德斯

升级到 .Net Core SDK 1.1.1 final bits 后,这更容易实现。

执行以下将执行测试,并生成 trx 输出。

dotnet test --logger trx

或者确定文件名

dotnet test --logger "trx;LogFileName=myTestResults.trx"