在 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"
我刚刚花了一天的大部分时间来解决这个问题。
问题出在这里:习惯于在 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"