2017-02-01 13 views
3

Я искал всюду в Интернете. Я попробовал почти все: от удаления STS до удаления всего кода с моей станции и повторного импорта всего обратно. Я играл с зависимостями, строил путь, свойства и т. Д., Но все равно ничего не работает.Ошибка Junit Mockito при инициализации

Выполнение тестов на Maven с помощью CLI работает нормально, а другие члены команды не имеют этой проблемы, поэтому, вероятно, это определенная конфигурация на моей станции.

Проблема:

При попытке отладки/запуска модульного теста внутри STS с помощью JUnit V 4 Я получаю сообщение об ошибке со следующей трассировки стека:.

java.lang.IllegalAccessError: class org.mockito.internal.creation.jmock.ClassImposterizer$1 cannot access its superclass org.mockito.internal.creation.cglib.MockitoNamingPolicy 
at java.lang.ClassLoader.defineClass1(Native Method) 
at java.lang.ClassLoader.defineClass(ClassLoader.java:763) 
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 
at java.net.URLClassLoader.defineClass(URLClassLoader.java:467) 
at java.net.URLClassLoader.access$100(URLClassLoader.java:73) 
at java.net.URLClassLoader$1.run(URLClassLoader.java:368) 
at java.net.URLClassLoader$1.run(URLClassLoader.java:362) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(URLClassLoader.java:361) 
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) 
at org.mockito.internal.creation.jmock.ClassImposterizer.<clinit>(ClassImposterizer.java:38) 
at org.mockito.internal.creation.CglibMockMaker.createMock(CglibMockMaker.java:23) 
at org.powermock.api.mockito.internal.mockmaker.PowerMockMaker.createMock(PowerMockMaker.java:43) 
at org.mockito.internal.util.MockUtil.createMock(MockUtil.java:33) 
at org.mockito.internal.MockitoCore.mock(MockitoCore.java:59) 
at org.mockito.Mockito.mock(Mockito.java:1285) 
at org.mockito.internal.configuration.MockAnnotationProcessor.process(MockAnnotationProcessor.java:33) 
at org.mockito.internal.configuration.MockAnnotationProcessor.process(MockAnnotationProcessor.java:16) 
at org.mockito.internal.configuration.DefaultAnnotationEngine.createMockFor(DefaultAnnotationEngine.java:43) 
at org.mockito.internal.configuration.DefaultAnnotationEngine.process(DefaultAnnotationEngine.java:66) 
at org.mockito.internal.configuration.InjectingAnnotationEngine.processIndependentAnnotations(InjectingAnnotationEngine.java:71) 
at org.mockito.internal.configuration.InjectingAnnotationEngine.process(InjectingAnnotationEngine.java:55) 
at org.mockito.MockitoAnnotations.initMocks(MockitoAnnotations.java:108) 
at org.mockito.internal.runners.JUnit45AndHigherRunnerImpl$1.withBefores(JUnit45AndHigherRunnerImpl.java:27) 
at org.junit.runners.BlockJUnit4ClassRunner.methodBlock(BlockJUnit4ClassRunner.java:254) 
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70) 
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50) 
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238) 
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63) 
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236) 
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53) 
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229) 
at org.junit.runners.ParentRunner.run(ParentRunner.java:309) 
at org.mockito.internal.runners.JUnit45AndHigherRunnerImpl.run(JUnit45AndHigherRunnerImpl.java:37) 
at org.mockito.runners.MockitoJUnitRunner.run(MockitoJUnitRunner.java:62) 
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86) 
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) 
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459) 
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:678) 
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382) 
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192) 

Если кто-нибудь есть какие-либо идеи о том, что проблема может быть ...

Вот часть POM:

<parent> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-parent</artifactId> 
    <version>1.4.2.RELEASE</version> 
    <relativePath>org.springframework.boot:spring-boot-starter-parent</relativePath> 
</parent> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-test</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>com.mockrunner</groupId> 
     <artifactId>mockrunner</artifactId> 
     <version>0.3.1</version> 
    </dependency> 
+0

Является ли mockito объявленным как прямая зависимость? Попробуйте проверить версии зависимостей mockito с помощью [dependency: tree] (https://maven.apache.org/plugins/maven-dependency-plugin/examples/resolving-conflicts-using-the-dependency-tree.html). –

ответ

2

spring-boot-starter-test 1.4.2.RELEASE использует Mockito 1.10.19 по умолчанию, org.mockito.internal.creation.jmock.ClassImposterizer не существует в 1.10.19. Сейчас он находится в пакете org.mockito.internal.creation.cglib.

Исключить org.mockito из spring-boot-starter-test следующим образом:

<dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-test</artifactId> 
      <scope>test</scope> 
      <exclusions> 
       <exclusion> 
        <groupId>org.mockito</groupId> 
        <artifactId>mockito-core</artifactId> 
       </exclusion> 
      </exclusions> 
</dependency> 

И включают mockito-all 1.9.5 как зависимость:

<dependency> 
    <groupId>org.mockito</groupId> 
    <artifactId>mockito-core</artifactId> 
    <version>1.9.5</version> 
    <scope>test</scope> 
</dependency> 
+1

Спасибо! это сработало! – eladyanai

0

В я добавил правильные банки в пути сборки проекта моем случае. Но в пуле конфигурации конфигурации тестового сценария были разные банки. Для меня работала исправление конфигурации запуска junit.