[JAVA] Beim Versuch, PowerMock mit JUnit zu verwenden, wurde ein IllegalAccessError angezeigt

Einführung

Im JUnit-Test habe ich versucht, PowerMock zu installieren, weil ich es verwenden wollte, aber ein Fehler ist aufgetreten, sodass ich die Lösung zusammenfassen werde.

Symptome

//Foo Test
public class FooTest {
	@Test
    public void testFoo() {
        //Mock erstellen
        Bar bar = mock(Bar.class);
        
        //Verschiedene Tests
    }
}

Ich habe vor der Installation von PowerMock einen solchen Testcode geschrieben, der einwandfrei funktioniert hat.

Beim Hinzufügen von PowerMock zu pom.xml wurde beim Ausführen des Tests der folgende Fehler angezeigt.

java.lang.IllegalAccessError: class org.mockito.internal.creation.jmock.ClassImposterizer$1 cannot access its superclass org.mockito.internal.creation.cglib.MockitoNamingPolicy

In pom.xml ist der Teil, der verwandt zu sein scheint, so.

<dependencies>
  <!-- Spring Boot Starter Test -->
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
  </dependency>
  <!-- Powermock -->
  <dependency>
    <groupId>org.powermock</groupId>
    <artifactId>powermock-api-mockito</artifactId>
    <version>1.5.4</version>
    <scope>test</scope>
  </dependency>
  <dependency>
    <groupId>org.powermock</groupId>
    <artifactId>powermock-module-junit4</artifactId>
    <version>1.5.4</version>
    <scope>test</scope>
  </dependency>
  <!--Andere externe Bibliotheken-->
</dependencies>

Analyse

Als ich Google ausprobierte, war diese Frage und Antwort hilfreich.

stackoverflow - Junit Mockito error on initialization

Demnach verwendet "Spring-Boot-Starter-Test 1.4.2.RELEASE" standardmäßig "Mockito 1.10.19" und am 1.10.19 "org.mockito.internal.creation.jmock.ClassImposterizer" Es scheint, dass `nicht enthalten ist.

In meiner Umgebung habe ich "Spring-Boot-Starter-Test 1.5.14.RELEASE" verwendet, und als ich die Maven-Abhängigkeit überprüft habe, habe ich festgestellt, dass sie auch "Mockito 1.10.19" verwendet. Ich tat.

Es scheint, dass 1.9.5 "org.mockito.internal.creation.jmock.ClassImposterizer" enthält.

Lösung

Ändern Sie pom.xml wie folgt.

<dependencies>
  <!-- Spring Boot Starter Test -->
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
    <!--Mockito ausschließen-->
    <exclusions>
      <exclusion>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-core</artifactId>
      </exclusion>
    </exclusions>
  </dependency>
  <!--Mockito hinzugefügt-->
  <dependency>
    <groupId>org.mockito</groupId>
    <artifactId>mockito-core</artifactId>
    <version>1.9.5</version>
    <scope>test</scope>
  </dependency>
  <!-- Powermock -->
  <dependency>
    <groupId>org.powermock</groupId>
    <artifactId>powermock-api-mockito</artifactId>
    <version>1.5.4</version>
    <scope>test</scope>
  </dependency>
  <dependency>
    <groupId>org.powermock</groupId>
    <artifactId>powermock-module-junit4</artifactId>
    <version>1.5.4</version>
    <scope>test</scope>
  </dependency>
  <!--Andere externe Bibliotheken-->
</dependencies>

Jetzt ist der Fehler weg.

schließlich

Es war hilfreich, leicht verständliche Fragen und Antworten zu haben.

Recommended Posts

Beim Versuch, PowerMock mit JUnit zu verwenden, wurde ein IllegalAccessError angezeigt
Ich habe eine InvalidUseOfMatchersException erhalten, wenn ich eine in JUnits Mock verwende
Beim Verschlüsseln mit Node + Docker wurde eine Fehlermeldung angezeigt
Beim Versuch, sbt zu installieren, um eine Scala-Entwicklungsumgebung zu erstellen, ist ein Fehler aufgetreten
Ein problematischer Hinweis beim Versuch, nginx mit Remote-Containern von vscode zu verwenden
Ich war süchtig nach WSl, als ich versuchte, mit Vue.js eine Entwicklungsumgebung für Android-Anwendungen zu erstellen
Ich möchte DBViewer mit Eclipse 2018-12 verwenden! !!
Als ich versuchte, mit Docker eine Umgebung für PHP7.4 + Apache + MySQL zu erstellen, blieb ich stecken [Windows & Mac]
Ich möchte Java8 für jeden mit Index verwenden
[Fehlerbehebung] Tritt auf, wenn versucht wird, mit Docker eine Umgebung für den Frühling zu erstellen
Zusammenfassung beim Versuch, Solr in Java zu verwenden und eine Fehlermeldung zu erhalten (Solr 6.x)
Bei der Registrierung eines neuen Benutzers wurde ein Fehler namens ActiveRecord :: NotNullViolation und der Umgang damit angezeigt.
Eine Warnung wird angezeigt, wenn versucht wird, eine große Ganzzahl mit den speziellen Variablen $ 1, $ 2, $ 3 ... zu verwenden.
Webdrivers :: BrowserNotFound: Chrome-Binärdatei konnte nicht gefunden werden. Als ich zum ersten Mal versuchte, E2E mit Docker + Rails zu testen, war ein Fehler aufgetreten.
Bei der Verwendung von nextInt, nextLine und substring ist ein Fehler aufgetreten.
Ich möchte eine mit Rails 6 erstellte App an GitHub senden
So geben Sie db beim Erstellen einer App mit Rails an
Was passiert mit Instanzvariablen beim Kopieren einer Instanz mit Ruby?
Ich möchte manuell eine Autorisierungs-E-Mail mit Devise senden
[Java] Ich möchte Standardeingabe und Standardausgabe mit JUnit testen
Verwendung von JUnit (Anfänger)
[Erstellen] Verwendung von JUnit
Als ich versuchte, das AWS SDK mit Ruby + Lambda zu verwenden, war "sam local" durcheinander.
Als ich versuchte, ein Composer-Update im Docker-Container durchzuführen, wurde ich wütend auf proc_open (): fork failed
Wenn ich zu Heroku drücke, ärgere ich mich darüber, dass das Vorkompilieren von Assets fehlgeschlagen ist.
Ich habe versucht, mit Eclipse + Tomcat eine http2-Entwicklungsumgebung zu erstellen
Wovon ich süchtig war, als ich die Google-Authentifizierung mit Rails implementierte
Ich habe versucht, eine Android-Anwendung mit MVC zu erstellen (Java)
[Rails] Ich möchte beim Übergang mit link_to Daten zu Params hinzufügen
Es wurde ein Fehler behoben, der beim Versuch auftrat, Spark in einer Umgebung zu verwenden, in der Java 8 und Java 11 gleichzeitig vorhanden sind
Ich habe versucht, mit Java zu interagieren
Wie man mssql-tools mit alpine benutzt
Als ich ein mit WildFly Swarm erstelltes Glas ausführte, erhielt ich eine InvocationTargetException.
Probleme, denen ich beim Erstellen der Digdag-Umgebung mit Docker verfallen war
Ich habe versucht, ein automatisches Backup mit angenehmem + PostgreSQL + SSL + Docker zu erstellen
01. Ich habe versucht, eine Umgebung mit SpringBoot + IntelliJ + MySQL (MyBatis) (Windows 10) zu erstellen.
Ich möchte bei der Registrierung in der Datenbank eine Fehlermeldung anzeigen
Ich möchte für jedes Array mit Lambda-Ausdruck in Java
Wenn ich versuche, mich bei devise anzumelden, wird automatisch zu root_path umgeleitet
Da der Befehl du, der bei voller Kapazität verwendet wird, schwierig zu verwenden ist, habe ich versucht, ihn mit Rubin zu umwickeln
Ich habe mit Vagrant eine CentOS 8-Umgebung erstellt und versucht, den Ordner zu synchronisieren, aber ich habe einen Fehler erhalten, also habe ich ihn behoben.
Der Versuch, Docker mit Jetson Jetpack4.3 zu verwenden, schlägt fehl (Docker: Fehlerantwort des Daemons: OCI-Laufzeiterstellung fehlgeschlagen: container_linux.go: 345: Starten des Containerprozesses verursacht ...)