当我使用相同的projectBaseDir扫描Sonar的多模块项目时,单元测试计数错误。我的常规应用程序有80个单元测试,我的java 0和我的javascript 0.每次扫描我的项目时,单元测试计数结束240.如果我把java或js模块取出,它会降到160并降到80如果我完全删除其他两个模块。我如何拥有一个共享相同根目录的模块化项目,并且不会对单元测试进行双倍/三倍计算?对于我在项目中扫描的每种语言,我不应该有单独的Sonar项目或完整的模块子目录。
Sonar 3.7.4,框架1.4,Sonar-Runner 2.3,声纳-groovy-plugin-1.0-spantree-SNAPSHOT.jar
sonar.projectKey=com.me:myapp
sonar.projectName=MyApp
sonar.projectVersion=1.0
sonar.projectDescription=
sonar.modules=module-java, module-js,module-grvy
module-grvy.sonar.projectName=MyApp - Grails
module-grvy.sonar.language=grvy
module-grvy.sonar.sources=src/groovy
module-grvy.sonar.tests=test/unit
module-grvy.sonar.projectBaseDir=.
module-java.sonar.projectName=MyApp - Java
module-java.sonar.language=java
module-java.sonar.sources=src/java
module-java.sonar.tests=
module-java.sonar.projectBaseDir=.
module-js.sonar.projectName=MyApp - JavaScript
module-js.sonar.language=js
module-js.sonar.sources=web-app
module-js.sonar.tests=
module-js.sonar.exclusions=**/built/*.js
module-js.sonar.projectBaseDir=.
sonar.sourceEncoding=UTF-8
sonar.dynamicAnalysis=reuseReports
sonar.surefire.reportsPath=target/test-reports
sonar.core.codeCoveragePlugin=cobertura
sonar.cobertura.reportPath=target/test-reports/cobertura/coverage.xml
答案 0 :(得分:0)
如果需要查看适合模块的单元测试计数,则需要使用模块将单元测试结果报告给声纳。
为了解释这一点,我将采用.NET示例,您可以将其与任何语言相关联,以实现类似的工作结果。
解决方案:假设我有三个模块(dll),如下所示。
MVP.Unit.Test.1.dll
- 5次测试MVP.Unit.Test.2.dll
- 8次测试MVP.Unit.Test.3.dll
- 2次测试我需要分别在这些dll中运行单元测试,以便为这些测试dll生成单独的单元测试报告。单元测试报告如下。
MVP.Unit.Test.1.trx
(。trx是.NET世界中单元测试报告的扩展)MVP.Unit.Test.2.trx
MVP.Unit.Test.3.trx
现在我为不同的模块提供了单独的单元测试报告,我们需要使用属性文件将其报告给声纳,如下所示。
MVP.Unit.Test.1.sonar.cs.vstest.reportPaths=C:/Test/MVP.Unit.Test.1.trx
MVP.Unit.Test.2.sonar.cs.vstest.reportPaths=C:/Test/MVP.Unit.Test.2.trx
MVP.Unit.Test.3.sonar.cs.vstest.reportPaths=C:/Test/MVP.Unit.Test.3.trx
以上配置将做的是,它将告诉Sonar正确地将单元测试结果映射到正确的模块,以便我们根据模块对单元测试进行很好的分割。
你去吧。现在,您将能够根据模块查看Sonar中的单元测试计数。