ich meine Schnittstelle mit java8 defult Methodendeklaration deklariert haben:Funktioniert das Cobertura Maven Plugin nicht mit Java8 Default Method Deklaration in Interfaces?
public interface MyInterface {
default String myMethod(String str) {
//IMPLEMENTATION
}
}
Als nächstes ausgeführt i Maven Ziel:
mvn cobertura:cobertura
Das Protokoll zeigt Fehler, da cobertura nicht java8 Standardmethode Erklärung unterstützt:
[INFO] Executed tasks
[INFO]
[INFO] <<< cobertura-maven-plugin:2.7:cobertura (default-cli) < [cobertura]test @ extractor <<<
[INFO]
[INFO] --- cobertura-maven-plugin:2.7:cobertura (default-cli) @ extractor ---
[INFO] Cobertura 2.1.1 - GNU GPL License (NO WARRANTY) - See COPYRIGHT file
[INFO] Cobertura: Loaded information on 134 classes.
[WARN] JavaNCSS got an error while parsing the java file <PATH_TO_MY_INTERFACE>\MyInterface.java
ParseException in STDIN
Last useful checkpoint: "path.to.my.class.MyInterface"
Encountered " "default" "default "" at line 10, column 9.
Was expecting one of:
"abstract" ...
"boolean" ...
"byte" ...
"char" ...
"class" ...
"double" ...
"enum" ...
"final" ...
"float" ...
"int" ...
"interface" ...
"long" ...
"native" ...
"private" ...
"protected" ...
"public" ...
"short" ...
"static" ...
"strictfp" ...
"synchronized" ...
"transient" ...
"void" ...
"volatile" ...
<IDENTIFIER> ...
"}" ...
";" ...
"@" ...
"<" ...
Wie kann ich es beheben?
Anscheinend gibt es keine (echte) Unterstützung für Java 8. Die CHANGELOG Ansprüche mit 2.1.1 unterstützen, aber es gibt viele offene Fragen und Themen Probleme berichten ... – Holger
Ich würde empfehlen, JaCoCo zu verwenden, anstatt cobertura Ursache Instrumentierung wird nicht mehr benötigt, da Java 6 .... – khmarbaise
Ok khmarbaise, ich werde den JaCoCo stattdessen versuchen! –