Не удалось инициализировать встроенный макет Byte Buddy. Проблема при использовании встроенного mockito

У меня проблема, когда активен встроенный mockito. Тест отлично работает в обычном режиме. Ошибка:

[ERROR] Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 25.556 s <<< FAILURE! - in es.ddmain.utils.FileSystemUtilsTest
[ERROR] testIntentarSubirImagenYtestBorrarFichero  Time elapsed: 25.548 s  <<< ERROR!
java.lang.IllegalStateException: Could not initialize plugin: interface org.mockito.plugins.MockMaker (alternate: null)
        at es.ddmain.utils.FileSystemUtilsTest.testIntentarSubirImagenYtestBorrarFichero(FileSystemUtilsTest.java:61)
Caused by: java.lang.IllegalStateException: Failed to load interface org.mockito.plugins.MockMaker implementation declared in java.lang.CompoundEnumeration@249676e4
        at es.ddmain.utils.FileSystemUtilsTest.testIntentarSubirImagenYtestBorrarFichero(FileSystemUtilsTest.java:61)
Caused by: java.lang.reflect.InvocationTargetException
        at es.ddmain.utils.FileSystemUtilsTest.testIntentarSubirImagenYtestBorrarFichero(FileSystemUtilsTest.java:61)
Caused by: org.mockito.exceptions.base.MockitoInitializationException:

Could not initialize inline Byte Buddy mock maker.

It appears as if your JDK does not supply a working agent attachment mechanism.
Java               : 11
JVM vendor name    : Oracle Corporation
JVM vendor version : 11.0.2+9-LTS
JVM name           : Java HotSpot(TM) 64-Bit Server VM
JVM version        : 11.0.2+9-LTS
JVM info           : mixed mode
OS name            : Windows 7
OS version         : 6.1

        at es.ddmain.utils.FileSystemUtilsTest.testIntentarSubirImagenYtestBorrarFichero(FileSystemUtilsTest.java:61)
Caused by: java.lang.IllegalStateException: Could not self-attach to current VM using external process
        at es.ddmain.utils.FileSystemUtilsTest.testIntentarSubirImagenYtestBorrarFichero(FileSystemUtilsTest.java:61)

[EDIT] Извините, я забыл включить версию mockito.

<dependency>
    <groupId>org.mockito</groupId>
    <artifactId>mockito-junit-jupiter</artifactId>
    <version>4.8.1</version>
    <scope>test</scope>
</dependency>

что я могу сделать, чтобы исправить это? я нуб в мокито

Спасибо

Какую версию Mockito вы используете?

armandino 02.04.2023 18:15

4.8.1 извините, я забыл включить эту информацию

Blrackerd 02.04.2023 18:20
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
2
237
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Скорее всего вы столкнулись с Не удалось самостоятельно подключиться к текущей ВМ с помощью внешнего процесса (ByteBuddyAgent.installExtension) #2741

Известно, что Mockito не может имитировать несколько классов, которые он использует внутри. Вопрос закрыт как неразрешимый

К сожалению, InputStream — это один из классов, на который Mockito полагается в своем поведении. Таким образом, заглушка InputStream приведет к неопределенному поведению. Кроме того, рекомендуется не издеваться над классами, которыми вы не владеете: https://github.com/mockito/mockito/wiki/How-to-write-good-tests#dont-mock-a-type-you -dont-own Мы работаем над улучшением взаимодействия с пользователем, работая над функцией DoNotMock, чтобы избежать насмешек над классами/методами, которые, как известно, вызывают сбой внутренних компонентов Mockito (#1833). Поэтому я закрываю это как «неосуществимое». Приносим извинения за выброшенное неинформативное исключение.

Спасибо, я понимаю, но это выдает ошибку только в том случае, если я активен режим «mock-maker-inline», в обычном режиме работает отлично. Есть ли способ запустить некоторые тесты в режиме «mock-maker-inline», а другие — в обычном режиме?

Blrackerd 03.04.2023 22:34

@Blrackerd Если возможно, я бы искал способы не издеваться над этими проблемными классами. Например, вместо того, чтобы имитировать InputStream, вы можете создать его из заданной строки (stackoverflow.com/questions/782178/…) и т. д.

Lesiak 03.04.2023 23:22

у меня такая же проблема!!

Caused by: java.lang.IllegalStateException: Internal problem occurred, please report it. Mockito is unable to load the default implementation of class that is a part of Mockito distribution. Failed to load interface org.mockito.plugins.MockMaker
    at org.mockito.internal.configuration.plugins.DefaultMockitoPlugins.create(DefaultMockitoPlugins.java:104)
    at org.mockito.internal.configuration.plugins.DefaultMockitoPlugins.getDefaultPlugin(DefaultMockitoPlugins.java:78)
    at org.mockito.internal.configuration.plugins.PluginLoader.loadPlugin(PluginLoader.java:75)
    at org.mockito.internal.configuration.plugins.PluginLoader.loadPlugin(PluginLoader.java:50)
    at org.mockito.internal.configuration.plugins.PluginRegistry.<init>(PluginRegistry.java:27)
    at org.mockito.internal.configuration.plugins.Plugins.<clinit>(Plugins.java:22)
    at org.mockito.internal.MockitoCore.<clinit>(MockitoCore.java:73)
    at org.mockito.Mockito.<clinit>(Mockito.java:1669)
    at org.springframework.boot.test.mock.mockito.MockReset.withSettings(MockReset.java:81)
    at org.springframework.boot.test.mock.mockito.MockDefinition.createMock(MockDefinition.java:147)
    ... 86 more
Caused by: java.lang.reflect.InvocationTargetException
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
    at org.mockito.internal.configuration.plugins.DefaultMockitoPlugins.create(DefaultMockitoPlugins.java:102)
    ... 95 more
Caused by: org.mockito.exceptions.base.MockitoInitializationException: 
Could not initialize inline Byte Buddy mock maker.

это не работает, когда я выбрал orcal17 или amazon17

It appears as if your JDK does not supply a working agent attachment mechanism.
Java               : 17
JVM vendor name    : Amazon.com Inc.
JVM vendor version : 17.0.6+10-LTS
JVM name           : OpenJDK 64-Bit Server VM
JVM version        : 17.0.6+10-LTS
JVM info           : mixed mode, sharing
OS name            : Windows 10
OS version         : 10.0

Это не отвечает на вопрос. Это должно было быть резюмировано как комментарий под исходным постом.

Narish 17.04.2023 20:03

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