我的问题是.net网络应用程序有一个带有javascript和JEST单元测试的UI项目的场景。拥有1个sonarQube项目是否正常,可以准确显示.cs和.js文件的代码覆盖率,VStests和Jest Unit测试?
我已经尝试过使用msbuild跑步者和声纳扫描仪,但我无法让它在1岁以下工作。
由于
答案 0 :(得分:1)
根据我的经验,如果将非C#文件包含在项目文件中,分析将会获取非C#文件,如下所示:<Content Include="src\**\*.js" />
对于测试覆盖率,我还没有尝试过,但它应该可以在Begin命令行中定义与JavaScript coverage相关的属性,如下所示:/d:sonar.property.name=value
答案 1 :(得分:0)
您可以在一个SonarQube项目中结合javascript和.Net单元测试以及覆盖范围。 两者都将显示覆盖率,但是单元测试计数仅来自javascript(仍然不知道如何解决)
如果从其他SonarQube属性中删除javascript单元测试xml文件行,则无需任何其他更改即可获得.Net的单元测试计数。
对于.Net,我们使用opencover获取.trx文件和coverage xml:
"path/to/OpenCover.Console.exe" -register:user -target:"%MSTestExe%" -targetargs:"/resultsfile:Tests.trx /noisolation /testcontainer:%~dp0Tests\bin\%Configuration%\Tests.dll" -output:"%~dp0results.xml"
对于javascript,它是具有karma-sonarqube-unit-reporter模块的karma(茉莉花)以获取lcov和xml文件
SonarQube的其他属性准备分析配置步骤(与MSBuild集成):
sonar.cs.opencover.reportsPaths=$(Build.SourcesDirectory)\ProjectName\results.xml
sonar.cs.vstest.reportsPaths=$(Build.SourcesDirectory)\ProjectName\Tests.trx
sonar.genericcoverage.unitTestReportPaths=$(Build.SourcesDirectory)\ProjectName\tests\reports\ut_report.xml
sonar.javascript.lcov.reportPath=$(Build.SourcesDirectory)\ProjectName\tests\reports\coverage\lcov.info