我们有一个C#解决方案,以及一个带有jenkins的CI解决方案。
每天晚上,jenkins清除工作区,获取最新版本,在调试中构建它,通过OpenCover
运行测试。
我们有以下构建步骤(我之前没有提到这些步骤):
我们在jenkins做的第一件事就是用于MSBuild的SonarQube扫描仪 - 开始分析",我们指定项目键/名称和附加参数:
/d:sonar.cs.nunit.reportsPaths="%CD%\TestResult.xml"
/d:sonar.cs.opencover.reportsPaths="%CD%\opencover.xml"
我们使用MSBUILD14在调试中构建或解决方案
我们使用openCover检查代码覆盖率并执行测试:
"C:\Program Files (x86)\OpenCover\OpenCover.Console.exe" -filter:"+[*]* -[*.Test]*" -output:"%CD%\opencover.xml" -threshold:1 -register:User -target:"C:\Program Files (x86)\NUnit.org\nunit-console\nunit3-console.exe" -targetargs:"Solution\MySolution.sln --config=Debug --result=%CD%\TestResult.xml;format=nunit2"
exit 0
这应该发布SonarQube结果的结果
我应该使用以下参数发布TestResult.xml的其他步骤:
%CD%\TestResult.xml
一旦整个工作完成,我就在静态分析结果中的sonarqube,但我不会有单元测试结果和代码覆盖率结果。
我检查了日志,测试已经执行:
Test Run Summary
Overall result: Failed
Test Count: 4331, Passed: 3819, Failed: 189, Warnings: 0, Inconclusive: 0, Skipped: 323
Failed Tests - Failures: 39, Errors: 147, Invalid: 3
Skipped Tests - Ignored: 323, Explicit: 0, Other: 0
Start time: 2017-02-07 10:03:42Z
End time: 2017-02-07 11:51:56Z
Duration: 6494.182 seconds
我只有一个奇怪的例外:
An System.IO.DirectoryNotFoundException occured: Could not find a part of the path 'c:\Projects\CommonServiceLocator\main\Microsoft.Practices.ServiceLocation\ActivationException.cs'.
An System.IO.DirectoryNotFoundException occured: Could not find a part of the path 'c:\Projects\CommonServiceLocator\main\Microsoft.Practices.ServiceLocation\ServiceLocator.cs'.
An System.IO.DirectoryNotFoundException occured: Could not find a part of the path 'c:\Projects\CommonServiceLocator\main\Microsoft.Practices.ServiceLocation\ServiceLocatorImplBase.cs'.
An System.IO.DirectoryNotFoundException occured: Could not find a part of the path 'c:\Projects\CommonServiceLocator\main\Microsoft.Practices.ServiceLocation\Properties\Resources.Designer.cs'.
在openCover步骤结束时会发生这种情况。仍然生成了2个XML文件,我在本地也有这个异常。
我知道为什么我没有在sonarQube中获得代码覆盖/单元测试结果?
谢谢!