Amazon Coretto 11, Spring Boot и PowerMock — тесты не пройдены

У меня есть проект Spring Boot на основе Java, который использует PowerMock для имитации статических методов и вызовов конструктора, где это необходимо. После обновления до последней версии IntelliJ мне нужно использовать версию JDK выше, чем JDK 8. Я перешел на Amazon Coretto, так как хочу развернуть свое приложение на последней версии JDK поддержки на AWS Elastic Beanstalk. Когда я обновился и запустил тесты, я начал сталкиваться с проблемами После прохождения этой темы - https://github.com/java-decompiler/jd-gui/issues/187 и использования этого синтаксиса PowerMockIgnore

@PowerMockIgnore("javax.management.", "com.sun.org.apache.xerces.", "javax.xml.", "org.xml.", "org.w3c.dom.", "com.sun.org.apache.xalan.", "javax.activation.*", "javax.xml.transform.*", "com.sun.org.apache.xalan.*")

я получаю эту ошибку

java.lang.RuntimeException: java.lang.reflect.InaccessibleObjectException: Unable to make protected java.lang.Class jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(java.lang.String,boolean) throws java.lang.ClassNotFoundException accessible: module java.base does not "opens jdk.internal.loader" to unnamed module @d5ce97f
    at org.powermock.core.classloader.DeferSupportingClassLoader.findResource(DeferSupportingClassLoader.java:154)
    at java.base/java.lang.ClassLoader.findResource(ClassLoader.java:1342)
    at java.base/java.lang.Module.getResourceAsStream(Module.java:1575)
    at kotlin.reflect.jvm.internal.impl.serialization.deserialization.builtins.BuiltInsResourceLoader.loadResource(BuiltInsResourceLoader.java:27)
    at kotlin.reflect.jvm.internal.impl.descriptors.runtime.components.ReflectKotlinClassFinder.findBuiltInsData(ReflectKotlinClassFinder.kt:52)
    at kotlin.reflect.jvm.internal.impl.builtins.jvm.JvmBuiltInsPackageFragmentProvider.findPackage(JvmBuiltInsPackageFragmentProvider.kt:60)

Это поставило меня в тупик уже несколько дней. Может ли кто-нибудь предложить какие-либо дополнительные предложения о том, что я мог бы попробовать

С уважением Дэмиен

просто мысль, добавили ли вы <scope>test</scope> (или эквивалент gradle) к зависимости power mock? потому что он не должен загружаться при запуске кода

Roie Beck 15.12.2020 15:04

хороший вопрос - он предназначен для проверки

Damien 15.12.2020 15:27

Вам не нужен * в конце всех этих строк? Например, разве не должно быть javax.management.* вместо javax.management.?

Zack Macomber 17.12.2020 23:45

К сожалению, я попробовал это и получил эту ошибку сейчас: java.lang.RuntimeException: java.lang.reflect.InaccessibleObjectException: невозможно сделать защищенный java.lang.Class jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ja‌​va.lang .String, boole‌​an) выдает исключение java.lang.ClassNotFoundException, доступное: модуль java.base не «открывает jdk.internal.loader» для безымянного модуля @35088e87

Damien 18.12.2020 09:53

единственный способ, которым кто-то может оказать вам надлежащую помощь, — это доказать минимальный воспроизводимый пример, например, проект github, который показывает вашу проблему. Тогда люди могут помочь намного больше, чем вы думаете.

Eugene 08.01.2021 17:28
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
9
5
769
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Измените свою версию в Gradle:

testCompile('org.springframework.boot:spring-boot-starter-test') {
        exclude group: "org.mockito", module: "mockito-core"
    }
    testCompile("org.mockito:mockito-core:2.23.4")

спасибо за ваш ответ, но это не сработало

Damien 06.01.2021 11:17
Ответ принят как подходящий

Мне не удалось найти решение, позволяющее заставить PowerMock работать с Java 11, поэтому я удалил его из своего проекта.

Я хотел сказать, что если вы используете Spring, у вас есть: baeldung.com/spring-reflection-test-utils вы можете делать с этим все, что может powermock...

Roie Beck 10.01.2021 13:39

Другие вопросы по теме