2017-07-15 14 views
1

私はローカルマシンでSonarQuebe 6.2を実行していますが、静的解析のためにSonarにアップロードしたい単体テストのSpringブートJava 8プロジェクトがありますコードカバレッジで
コードカバレッジが発生した - 私は私のJaCoCo HTMLレポートを持っている、のJUnit XMLテスト・ファイルが生成されますが、私のソナーは、ユニットテストを欠場するようだでも、コードカバレッジがdiplayedされていることを考えた結果:
のpom.xml:ソナーがユニットテストを受け付けないコードカバレッジが生成されたと思っても結果が

<parent> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-parent</artifactId> 
    <version>1.5.2.RELEASE</version> 
</parent> 
<dependencies> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-web</artifactId> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-test</artifactId> 
     <scope>test</scope> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework.security</groupId> 
     <artifactId>spring-security-test</artifactId> 
     <scope>test</scope> 
    </dependency> 

    <dependency> 
     <groupId>com.h2database</groupId> 
     <artifactId>h2</artifactId> 
     <scope>test</scope> 
    </dependency> 

    <dependency> 
     <groupId>org.powermock</groupId> 
     <artifactId>powermock-module-junit4</artifactId> 
     <version>1.6.6</version> 
     <scope>test</scope> 
    </dependency> 

    <dependency> 
     <groupId>org.powermock</groupId> 
     <artifactId>powermock-api-mockito</artifactId> 
     <version>1.6.6</version> 
     <scope>test</scope> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-data-jpa</artifactId> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-security</artifactId> 
    </dependency> 

    <dependency> 
     <groupId>org.facebook4j</groupId> 
     <artifactId>facebook4j-core</artifactId> 
     <version>2.4.8</version> 
    </dependency> 

    <dependency> 
     <groupId>net.sf.dozer</groupId> 
     <artifactId>dozer</artifactId> 
     <version>5.5.1</version> 
    </dependency> 

    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-java8</artifactId> 
    </dependency> 

    <dependency> 
     <groupId>mysql</groupId> 
     <artifactId>mysql-connector-java</artifactId> 
    </dependency> 

    <dependency> 
     <groupId>org.apache.commons</groupId> 
     <artifactId>commons-csv</artifactId> 
     <version>1.4</version> 
    </dependency> 

</dependencies> 

<build> 
    <finalName>${project.artifactId}</finalName> 
    <plugins> 
     <plugin> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-maven-plugin</artifactId> 
     </plugin> 

     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>3.6.1</version> 
      <configuration> 
       <source>1.8</source> 
       <target>1.8</target> 
      </configuration> 
     </plugin> 

     <plugin> 
      <groupId>org.jacoco</groupId> 
      <artifactId>jacoco-maven-plugin</artifactId> 
      <version>0.7.9</version> 
      <executions> 
       <execution> 
        <id>default-prepare-agent</id> 
        <goals> 
         <goal>prepare-agent</goal> 
        </goals> 
       </execution> 
       <execution> 
        <id>default-report</id> 
        <phase>prepare-package</phase> 
        <goals> 
         <goal>report</goal> 
        </goals> 
       </execution> 
       <execution> 
        <id>default-check</id> 
        <goals> 
         <goal>check</goal> 
        </goals> 
        </execution> 
       <execution> 
        <id>generate-code-coverage-report</id> 
        <phase>test</phase> 
        <goals> 
         <goal>report</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 

マイsonar-project.properties:

sonar.projectKey=org.eventizer:EventizerServer 
sonar.projectName=EventizerServer 
sonar.projectVersion=1.0 

sonar.log.level=DEBUG 

sonar.sources=src/main/ 

sonar.language=java 
sonar.java.source=1.8 

sonar.sourceEncoding=UTF-8 

sonar.java.binaries=target/classes/org/eventizer/eventizerserver/ 
sonar.java.test.binaries=target/test-classes/org/eventizer/eventizerserver/ 
sonar.tests=src/test/ 

sonar.java.coveragePlugin=jacoco 
sonar.jacoco.reportPaths=target/jacoco.exec 
sonar.junit.reportPaths=target/surefire-reports/ 

私はこのMVN命令を実行しています:
MVNクリーンorg.jacoco:jacoco-のmaven-pluginのを:準備・エージェント・テスト-Dmaven.test.failure.ignore =真
のために設定されている
Target output directory

Classesディレクトリ:sonar.java.test.binariesのために設定されている
enter image description here

テストクラスディレクトリ:
enter image description here

私は次の出力をターゲットディレクトリを取得していた結果

Surefire JUnitテストレポートディレクトリ:sonar.junit.reportPaths
enter image description here

JaCoCoレポート出力ディレクトリ:
enter image description here

たブラウザで

JaCoCo HTMLレポート:私はいくつかの重要な以下のsonar-scanner.batを、実行しています。その後
enter image description here

(私はそうtihnk)出力:
enter image description here
enter image description here

My Sonar Webインスタンスプロジェクトの分析: enter image description here

そして、すべてが正しく生成されたように見えるので、なぜこのようなことが起こっているのかわかりません。昨日以来、私はStackOverflow上のすべてを試したと思うので、重複としてマークしないでください。
enter image description here

答えて

0

オーケーをので、私はソナーバグかもしれ何かを発見した:私はこのプロジェクトのためのカバレッジ・メトリクスにアクセスしたとき、私は100%のユニットテストが合格したことを見ることができるので
これはさえ奇妙です。
基本的に、このプロジェクトは基本的にmvn sonar:sonarの設定で長時間ソナーにプッシュされているため、テスト結果さえしていませんでした。今私はJenkins経由でそれを実行したいので、すべての必須フィールドをsonar-project.propertiesに入力し、Sonar-Runnerではなくmvn sonar:sonarでプッシュしました。
ユニットテストを見ることができるようになりました。最新のスクリーンショットでは、100.0%のユニットテストが成功したことが分かりました。
projectKeyプロパティを別のものに変更することで、その分析をプロジェクトに分割することにしました。突然すべてがスムーズに行われました。

関連する問題