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!
Ich habe keine Groovy Klassen in ** src/main/groovig **. Die Groovy-Tests in ** src/test/groovy ** testen Code in Java-Klassen. –
Ich habe den zweiten Teil der Konfiguration vergessen ... siehe aktualisierte Antwort. Sie können die Quellenkonfiguration entfernen, wenn Sie sie nicht benötigen. – cjstehno
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? –