- Windows 11 Pro (24 часа в сутки)
- Java 21 (21.0.2 16.01.2024 LTS)
- jacoco-maven-plugin 0.8.12
- AspectJ 1.9.22.1
- Spring Boot 3.3.4
- JUnit 5
- В продакшене при отправке запросов в Postman все работает нормально. Все переплетение AspectJ работает так, как ожидалось.
- Я также написал модульные тесты для проверки поведения переплетения во время выполнения. Когда я запускаю тесты (одиночные или несколько) в IntelliJ, все они проходят успешно.
- Когда я запускаю все модульные тесты через командную строку с помощью mvnw test, все тесты также проходят успешно. .

Эти ошибки отображаются как (I получите 4 из них в несвязанных модульных тестах):
Код: Выделить всё
┬╗ BootstrapMethod bootstrap method initialization exception
Код: Выделить всё
Caused by: java.lang.ClassCastException: class java.lang.Class cannot be cast to class java.lang.invoke.MethodType (java.lang.Class and java.lang.invoke.MethodType are in module java.base of loader 'bootstrap')
... 14 more
Я использую плагин Surefire и настроил его следующим образом:
Код: Выделить всё
org.apache.maven.plugins
maven-surefire-plugin
@{argLine}
-javaagent:"${settings.localRepository}/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar"
-XX:+EnableDynamicAgentLoading
Когда у меня сначала есть JaCoCo, я сталкиваюсь с проблемой, о которой упоминал выше. Если я перенесу JaCoCo на вторую позицию, модульные тесты пройдут 100%, но JaCoCo не сообщит о покрытии моего аспектного кода. Если сначала у меня есть JaCoCo (и я закомментировал неудачные тесты), то он фактически сообщает о покрытии моего аспектного кода.
Кроме того, у меня есть действие Github, которое запускает отчет JaCoCo ( в образе Linux) для создания значков покрытия, и если сначала у меня есть JaCoCo, все проходит и покрытие работает как положено.
Итак, TLDR заключается в том, что у меня проблема возникает только при создании отчетов JaCoCo. локально на моем компьютере с Windows 11. Это не могут быть мои модульные тесты или код аспекта, поскольку все они проходят тремя из четырех упомянутых мной способов. Затем я также заметил, что если я закомментирую один модульный тест, все эти несвязанные ошибки исчезнут.
Есть идеи?
РЕДАКТИРОВАТЬ:
Ветка групп Google, в которой упоминается, что JaCoCo будет первым:
https://groups.google.com/g/jacoco/c/HziLWA3uT6g
Проблема на GitHub, где @kriegaex упоминает, что AspectJ должен быть первым:
https://github.com/jacoco/jacoco/issues/909>
Подробнее здесь: https://stackoverflow.com/questions/791 ... generation