Ohne Beim Versuch Coverage wie oder führen ein Maven-Build mit emma auszuführen: emma ich folgenden erhalten:Synthetische Klassen in Emma innerhalb STS
java.lang.IllegalStateException: Kann nicht Methode zugreifen: nicht einstellen . static final [Z Feld packageName.className $ jacocoData bis [Z
Also suchte ich im Internet um, und ich fand die folgenden auf der EclEmma Webseite:
Mein Code verwendet Reflexion. Warum schlägt es fehl, wenn ich es mit JaCoCo ausführe? Ein privates statisches Feld $ jacocoData und ein privater statischer Methode $ jacocoInit():
Um Ausführungsdaten JaCoCo Instrumente, um die Klassen zu prüfenden , das fügt zwei Mitglieder in den Klassen zu sammeln. Beide Mitglieder sind als synthetische markiert.
Bitte ändern Sie Ihren Code, um synthetische Mitglieder zu ignorieren. Dies ist eine gute Praxis sowieso, da auch der Java-Compiler synthetische Mitglieder in bestimmten Situationen erstellt.
Aber ich kann keine Dokumentation im Web finden, wie synthetische Mitglieder mit Emma ignoriert werden können.
In STS schaue ich unter Preferences/Java/Code Coverage und ich sehe ein Excluds-Box, um Ausschlüsse zu setzen (und ich weiß, ich könnte auch den Ausschluss in meinem POM).
Ich frage mich nur, was da reingehen muss, um alle synthetischen Klassen auszuschließen.
Dank
Der 'hacky' Weg, die '$ jacocoData' zu ignorieren, ist zu wissen, dass sie immer am Ende der Liste der Klassenmitglieder angehängt wird. Allerdings wäre es für uns sehr interessant zu wissen, wie man synthetische Mitglieder einer Java/Scala Klasse ausschließt. –
Irgendwas Glück damit? Ich bin auf das gleiche Problem gestoßen und nun suche ich, wie ich Ihren Code ändern kann, um synthetische Mitglieder zu ignorieren. – topr