2016-07-06 36 views
2

Ich habe einige Probleme, um Sonar Codeabdeckung für Tests anzuzeigen, die in Java und Groovy geschrieben werden. Ich habe ein Maven mehrmoduligen Projekt, bei dem ein Modul kann wie folgt veranschaulicht werden:Sonar + JaCoCo - Codeabdeckung für Java und Groovy

firstServer 
    src/test/groovy 
    package1 
     GroovyTest1.groovy 
     GroovyTest2.groovy 
    src/test/java 
    package2 
     JavaTest1.java 
     JavaTest2.java 

Die pom.xml für firstServer wie folgt aussieht:

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
... 
<build> 
    <plugins> 
     <plugin> 
      <groupId>org.jacoco</groupId> 
      <artifactId>jacoco-maven-plugin</artifactId> 
      <version>0.7.7.201606060606</version> 
      <configuration> 
       <destFile>${sonar.jacoco.reportPath}</destFile> 
       <append>true</append> 
      </configuration> 
      <executions> 
       <execution> 
        <id>agent</id> 
        <goals> 
         <goal>prepare-agent</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 
     ... 
    </plugins> 
</build> 

Meine Sonar Eigenschaften sind im Elternteil pom.xml:

<properties> 
    <sonar.java.coveragePlugin>jacoco</sonar.java.coveragePlugin> 
    <sonar.dynamicAnalysis>reuseReports</sonar.dynamicAnalysis> 
    <sonar.jacoco.reportPath>${project.basedir}/../target/jacoco.exec</sonar.jacoco.reportPath> 
</properties> 

Wenn ich den Befehl mvn Paket Sonar: Sonar ausführen und SonarQube besuchen, um die Ergebnisse zu sehen, berücksichtigt die Codeabdeckung nur Java-Klassen. Ich kann keine groovigen Klassen unter meinen Unit Tests sehen, obwohl ich viele davon habe. Ich vermute, dass mir etwas in meinen POM-Dateien fehlt, aber ich weiß nicht was. Ich habe gelesen, dass es möglich ist, eine Mischung aus Groovy- und Java-Testklassen zu verwenden, wenn Sonar und JaCoCo verwendet werden. Meine Frage ist einfach, was fehlt mir?

Vielen Dank im Voraus!

Antwort

0

Sie müssen auch die Quellen und Tests Konfiguration hinzufügen:

<sonar.sources>src/main/java,src/main/groovy</sonar.sources> 
<sonar.tests>src/test/java,src/test/groovy</sonar.tests> 

Es scheint, dass das Plugin Groovy ignoriert anders.

+0

Ich habe keine Groovy Klassen in ** src/main/groovig **. Die Groovy-Tests in ** src/test/groovy ** testen Code in Java-Klassen. –

+0

Ich habe den zweiten Teil der Konfiguration vergessen ... siehe aktualisierte Antwort. Sie können die Quellenkonfiguration entfernen, wenn Sie sie nicht benötigen. – cjstehno

+0

Danke für die Antwort, aber ich habe ein Problem. Da ich keine groovigen Quellen habe, habe ich nur die Eigenschaft sonar.tests hinzugefügt. Der Aufbau des Projekts ist erfolgreich, aber die groovigen Tests sind immer noch nicht erledigt. Ich habe bemerkt, dass, wenn Sonar Maven-Module scannt, die ** src/test/groovy ** enthalten, die Groovy-Testklassen nicht gefunden werden können. Die Protokollmeldung lautet beispielsweise: [WARNUNG] Ressource nicht gefunden: MyPackage.MyGroovyTest Irgendwelche Ideen? –

0
  1. Installieren Sie das Groovy-Plugin in Sonar. Melden Sie sich als admin/admin und gehen in die Verwaltung/System/update-Center Registerkarte
  2. Fügen Sie die folgende Eigenschaft in der pom-Datei <sonar.tests>src/test/groovy,src/test/java</sonar.tests>