Kiedy próbuje uruchomić Coverage jako lub uruchomić kompilacji maven użyciu Emma Emma pojawia się następujący:Wyłączając syntetyczne Zajęcia w ciągu Emma STS
java.lang.IllegalStateException: nie można uzyskać dostępu do metody: Nie można ustawić . static final packageName.ClassName pole [z $ jacocoData do [z
Więc szukałem wokół online i znalazłem następujące na stronie EclEmma:
Mój kod wykorzystuje odbicie. Dlaczego kończy się niepowodzeniem, gdy wykonuję go za pomocą JaCoCo?
Aby zebrać dane Instrumenty JaCoCo wykonanie klas badanego który dodaje dwa członków do klasy: prywatna pola static $ jacocoData i prywatny statyczna metoda $ jacocoInit(). Obaj członkowie są oznaczani jako syntetyczne.
Proszę zmienić kod, aby zignorować członków syntetycznych. Jest to dobra praktyka, tak jak i kompilator Java tworzy w pewnych sytuacjach członków syntezatora .
Ale nie mogę znaleźć żadnej dokumentacji w Internecie na temat tego, jak zignorować syntetycznych członków z Emmą.
W STS patrzę pod Preferencje/Java/Code Coverage i widzę pole Excludes, aby umieścić wykluczenia (i wiem, że mogę również umieścić wykluczenie w moim POM).
Zastanawiam się tylko, co trzeba tam zrobić, aby wykluczyć wszystkie syntetyczne klasy.
Dzięki
"Hacky" sposób ignorowania '$ jacocoData' jest wiedzieć, że jest zawsze dołączany na końcu listy członków klasy. Chociaż bardzo chcielibyśmy wiedzieć, jak wykluczyć dowolnego syntetycznego członka klasy Java/Scala. –
Masz szczęście? Natknąłem się na ten sam problem i teraz szukam, jak _zmianować twój kod, aby zignorować członków syntetycznych_. – topr