在Bamboo

时间:2016-09-28 12:04:21

标签: .net-core bamboo xunit

我只是在一天的大部分时间里用这个来解决这个问题。

问题在于:用于在Bamboo中使用MSTest并且工作正常。

第一个使用Asp.Net.Core的项目,随着XUnit测试的出现,需要在Bamboo中进行设置。

Bamboo不支持XUnit测试结果xml文件..叹息......

怎么办?

2 个答案:

答案 0 :(得分:6)

升级到.Net Core SDK 1.1.1最终位后,这更容易实现。

执行以下命令将执行test,并生成trx输出。

dotnet test --logger trx

另外也可以确定文件名

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

答案 1 :(得分:0)

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

照常执行测试,将结果输出到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 to 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

我希望我能在这篇文章中保存几分钟。

竹子绝对没有办法告诉我文件无效 - 它只是说没有结果可以拿到。 :-)

祝你好运 /安德斯