2017-02-01 6 views
3

Ich habe überall online gesucht. Ich habe fast alles ausprobiert, vom Löschen von STS bis zum Löschen des gesamten Codes von meiner Station und dem erneuten Importieren von allem zurück. Ich spielte mit Abhängigkeiten, Build-Pfad, Eigenschaften, etc., aber immer noch nichts funktioniert.Junit Mockito Fehler bei der Initialisierung

Die Tests auf Maven von CLI laufen funktioniert gut, und andere Teammitglieder haben dieses Problem nicht, also ist es wahrscheinlich einige Konfiguration auf meiner Station.

Das Problem:

Wenn ich zu debuggen versuchen/einen Komponententest innerhalb STS läuft JUnit v mit 4 I einen Fehler mit der folgenden Stack-Trace erhalten.

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) 

Wenn jemand eine Idee, auf das, was das Problem sein könnte ...

Hier ist ein Teil des POM ist:

<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

Wird Mockito als direkte Abhängigkeit deklariert? Versuchen Sie, mit [dependency: tree] nach Mockito-Abhängigkeitenversionen zu suchen (https://maven.apache.org/plugins/maven-dependency-plugin/examples/resolving-conflicts-using-the-dependency-tree.html). –

Antwort

2

spring-boot-starter-test 1.4.2.RELEASE verwendet Mockito 1.10.19 standardmäßig org.mockito.internal.creation.jmock.ClassImposterizer existiert nicht in 1.10.19. Es ist jetzt im org.mockito.internal.creation.cglib Paket.

ausschließen org.mockito von spring-boot-starter-test wie folgt:

<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> 

Und umfassen mockito-all 1.9.5 als Abhängigkeit:

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

Danke! das hat funktioniert! – eladyanai

0

In meinem Fall habe ich richtige Gläser in Projekterstellungspfad hinzugefügt hatte. Der Testkonfigurationsklassenpfad des Testfalls hatte jedoch unterschiedliche JARs. Die Laufkonfiguration des Junit-Tests zu korrigieren, funktionierte für mich.

Verwandte Themen