具有相同projectBaseDir的多模块声纳项目错误地复制了单元测试计数

时间:2014-02-13 00:29:07

标签: unit-testing grails groovy sonar-runner sonarqube

当我使用相同的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

1 个答案:

答案 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中的单元测试计数。