После запуска тестов я получаю следующее исключение:
Testcase: treeCtorArgumentTest(com.xythos.client.drive.cachedtree.CachedTreeTest): Caused an ERROR
Could not initialize plugin: interface org.mockito.plugins.MockMaker
java.lang.IllegalStateException: Could not initialize plugin: interface org.mockito.plugins.MockMaker
at org.mockito.internal.configuration.plugins.PluginLoader$1.invoke(PluginLoader.java:66)
at com.sun.proxy.$Proxy7.isTypeMockable(Unknown Source)
at org.mockito.internal.util.MockUtil.typeMockabilityOf(MockUtil.java:29)
at org.mockito.internal.util.MockCreationValidator.validateType(MockCreationValidator.java:22)
at org.mockito.internal.creation.MockSettingsImpl.validatedSettings(MockSettingsImpl.java:168)
at org.mockito.internal.creation.MockSettingsImpl.confirm(MockSettingsImpl.java:162)
at org.mockito.internal.MockitoCore.mock(MockitoCore.java:64)
at org.mockito.Mockito.mock(Mockito.java:1687)
at org.mockito.Mockito.mock(Mockito.java:1600)
at com.xythos.client.drive.cachedtree.CachedTreeTest.setUp(CachedTreeTest.java:51)
Caused by: java.lang.NoClassDefFoundError: net/bytebuddy/dynamic/loading/ClassLoadingStrategy
at org.mockito.internal.creation.bytebuddy.SubclassByteBuddyMockMaker.<init>(SubclassByteBuddyMockMaker.java:33)
at org.mockito.internal.creation.bytebuddy.ByteBuddyMockMaker.<init>(ByteBuddyMockMaker.java:22)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at java.lang.Class.newInstance(Class.java:442)
at org.mockito.internal.configuration.plugins.PluginLoader.loadPlugin(PluginLoader.java:54)
at org.mockito.internal.configuration.plugins.PluginRegistry.<init>(PluginRegistry.java:18)
at org.mockito.internal.configuration.plugins.Plugins.<clinit>(Plugins.java:17)
at org.mockito.internal.util.MockUtil.<clinit>(MockUtil.java:24)
Caused by: java.lang.ClassNotFoundException: net.bytebuddy.dynamic.loading.ClassLoadingStrategy
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
Это мой тест:
package com.xythos.client.drive.cachedtree;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.junit.MockitoJUnitRunner;
@RunWith(MockitoJUnitRunner.class)
public class CachedTreeTest {
public CachedTreeTest() {
}
@Test
public void treeCtorArgumentTest() {
somemock m = mock(SomeClass.class);
}
}
Я использую NetBeans 8.2. Я загрузил mockito-core-2.7.0.jar, затем выбрал «Тестовые библиотеки» -> «Добавить Jar» и добавил mockito-core-2.7.0.jar.
Путь к классам и все выглядит нормально, я все еще получаю исключение.
Любой совет?
Ответы:
Если вы используете powermock, убедитесь, что ваши зависимости указывают на:
вместо того
источник
Отсутствует ссылка на:
Начиная с бета-версии Mockito 2.0.2, у Mockito-core есть зависимости.
источник
mockito 2.25.1
вас нужно толькоobjenesis-3.0.1.jar
иbyte-buddy-1.9.12.jar
.У меня был Byte Buddy в пути к классам (это переходная версия Mockito 2.8.9), и все равно было исключение. Причина для меня заключалась в том, что я запускал модульные тесты с JRE вместо JDK. У меня сработал переход на JDK.
источник
У меня была такая же проблема - в моем журнале появилась такая же трассировка стека. Обычно это проблема с настройкой проекта ... ИЛИ
Проблема может быть в JAR-файлах bytebuddys, если они не были правильно загружены.
Когда я пытаюсь проверить класс ClassLoadingStrategy вручную , то я получаю зип ошибки.
В этом случае достаточно вручную удалить Byte Buddy из локального каталога maven, обычно расположенного по адресу:
{home} /. M2 / repository / net / bytebuddy /
При следующей попытке запустить проект или тест они будут снова загружены и должны работать как и ожидалось.
К сожалению, распространенный Java ClassLoader сталкивается с таким же образом, когда класс или jar отсутствуют, а также jar поврежден.
источник
net.bytebuddy*
зависимость, поэтому зависимости могут конфликтовать друг с другом.Эта проблема с Mockito2 возникает, если вы включите опцию имитации финальных классов.
В этом случае byte-buddy, которая является транзитивной зависимостью для mockito-core, сталкивается с проблемой присоединения собственного агента к процессу java. Но проблема возникает только при использовании JRE.
Решение было бы либо:
или
-javaagent:byte-buddy-agent-*.jar
как вариант ВМисточник
Проблема: PowerMock + Mockito + TestNG + PowerMockTestCase
Поделюсь своей проблемой / решением, если это кому-то поможет.
Все мои зависимости были указаны правильно:
testImplementation 'org.mockito:mockito-core:2.8.47' testImplementation 'org.powermock:powermock-core:1.7.4' testImplementation 'org.powermock:powermock-module-testng:1.7.4' testImplementation 'org.powermock:powermock-api-mockito2:1.7.4'
Но я все равно получаю следующую ошибку:
Мой тест был примерно таким:
import org.powermock.core.classloader.annotations.PrepareForTest; import org.powermock.modules.testng.PowerMockTestCase; import static org.mockito.MockitoAnnotations.initMocks; @PrepareForTest(MyClass.class) public class MyTest extends PowerMockTestCase { @BeforeTest public void init() { initMocks(this); } }
Как упоминалось в этом потоке, удаление
initMocks()
метода устраняет ошибку, но все макеты становятся нулевыми.✅ Решение: BeforeTest VS BeforeMethod
Что я обнаружил в своем случае, так это то, что на
@BeforeTest
самом деле возникла проблема. Изменив его, чтобы@BeforeMethod
устранить ошибку.import org.powermock.core.classloader.annotations.PrepareForTest; import org.powermock.modules.testng.PowerMockTestCase; import static org.mockito.MockitoAnnotations.initMocks; @PrepareForTest(MyClass.class) public class MyTest extends PowerMockTestCase { @BeforeMethod // CHANGE THIS! public void init() { initMocks(this); } }
Я предполагаю, что это как-то связано с инъекцией бобов;
@BeforeTest
выполняется до того, как были введены какие-либо bean-компоненты, в то время@BeforeMethod
как выполняется после инъекции beans. Не знаю, как это на самом деле повлияло.источник
В моем случае я работал над проектом, который не использует систему сборки maven. Вот что у меня сработало.
NB: (создание библиотеки необязательно, вы можете добавить jar-файлы непосредственно в путь сборки вашего проекта)
Надеюсь, это кому-то поможет.
источник
Удалите «byte-buddy-1.7.11.jar» вручную из пути к репозиторию maven, который указан в ошибке. Maven обновит проект, и проблема будет решена. Пробовал и работал у меня.
источник
Mockito 2 требует наличия зависимостей. Добавление двух зависимостей ByteBuddy ниже. решил проблему для меня:
В моем случае я включаю в проект файлы jar, которые можно найти по адресу: https://bintray.com/raphw/maven/ByteBuddy/
Если вам это нужно для проекта Maven, просто добавьте:
источник
Для меня проблема заключалась в том, что IntelliJ запускал тест как интеграционный. Поэтому мне нужно было создать тест JUnit вручную
источник
В моем случае к этой ошибке также приведет некоторая ненормальная настройка env:
в ubuntu 16.04 java и javac были альтернативами обновления 7, но для $ JAVA_HOME было ошибочно установлено значение 8
я удаляю $ JAVA_HOME, и все возвращается в нормальное состояние
источник
Добавляем к этому аспекту бэнд
В дополнение к ответу Паскаса вы также должны включить зависимости в репозиторий cnf maven, если вы его используете (например, мой
cnf/central.mvn
).и для удобства ссылок вы можете включить переменную bnd в свой
cnf/build.bnd
и в файле bnd вашего проекта
источник
У меня была такая же проблема в одном существующем проекте. Я использовал java 8 и дополнительно установил java 10. Итак, я начал получать это исключение. Я деинсталлировал java 10, не помогло. Я удалил банки bytebuddy из репозитория maven, это не помогло. Только после полного удаления всех jar-файлов из репозитория maven я смог снова скомпилировать проект.
источник
У меня работает удаление объявления версии:
Пример:
удалить 2.8.9
После:
Это может быть связано с проблемой версии между пакетами jar этой зависимости.
источник
Не ответ на исходный плакат, поскольку он / он использует Netbeans, но в Eclipse мне нужно было выполнить «Maven -> Обновить проект», чтобы тесты снова заработали.
источник
Я столкнулся с этой проблемой и решил ее, обновив мою версию org.mockito.mockito-core до последней версии. Я довольно давно использовал старую версию.
источник
Я решил эту проблему, удалив jmockit в POM XML для Maven. После этого мои тесты Junit 5 работают отлично.
С этой зависимостью я всегда получаю сообщение об ошибке:
источник
Явно определите зависимость mockito, поскольку версия в вашем powermock и springboot отличается от группы testCompile: 'org.mockito', имя: 'mockito-core', версия: '2.8.9'
источник
Моя зависимость от mockito находилась под androidTestImplementation, а не под testImplementation.
Я получил ту же ошибку, когда попытался использовать mockito со своими модульными тестами. Все, что мне нужно было сделать, это добавить зависимость.
источник
В моем случае после удаления
mockito-core
тест заработал!<dependency> <groupId>org.mockito</groupId> <artifactId>mockito-core</artifactId> <version>${mockito.version}</version> <scope>test</scope> </dependency>
Моя версия здесь, а JDK - 1.8.0_121.
<properties> <powermock.version>2.0.7</powermock.version> <mockito.version>2.8.9</mockito.version> </properties>
Теперь мои зависимости:
источник
У меня было такое же исключение при переключении на Java 10 и Spring Boot 2. Эта комбинация зависимостей сработала для меня:
источник
У меня была такая же проблема, и я попробовал решение @Paskas, сначала хорошо работал Junit Test. добавила зависимость bytebuddy к моему pom.xml:
Надеюсь это поможет.
источник
Просто обновите до последней версии
org.mockito:mockito-core
. Как только я это сделал, ошибки исчезли!источник