web-dev-qa-db-fra.com

Problème de PowerMock et de Java 8: InterfaceMethodrefInfo ne peut pas être converti en MethodrefInfo

J'ai des problèmes en essayant d'exécuter un test unitaire avec PowerMock avec Mockito. J'ai besoin de PowerMockito pour se moquer d'une méthode statique.

Voici les versions que j'utilise:

PowerMock 1.6.2
Mockito 1.10.19
JUnit 4.12
Java 8

Lorsque j'ajoute l'annotation @PrepareForTest (Graph.class), l'erreur suivante apparaît:

Java.lang.IllegalStateException: Failed to transform class with name     name.of.my.package.GraphUtil. Reason: javassist.bytecode.InterfaceMethodrefInfo cannot be cast to javassist.bytecode.MethodrefInfo

J'ai lu sur la page officielle de Google PowerMock que cela est lié à javassist. Mais je suis un peu perdu et je ne sais pas comment le réparer. 

Juste au cas où, j'ai également essayé de télécharger le dernier SNAPSHOT de Powermock (1.6.3-SNAPSHOT) mais je n'ai pas fonctionné non plus.

Quelqu'un pourrait-il m'aider, s'il vous plaît?

Merci d'avance

15

Oui, c'était le problème. PowerMock a une dépendance à javassist, il me fallait donc exclure cette dépendance transitive dans mon pom et inclure plus tard la dépendance à la version corrigée de javassist. Et cela a fonctionné pour moi. Merci! 

3

Après Francisco González réponse, voici ce que je devais faire:

<dependency>
    <groupId>org.powermock</groupId>
    <artifactId>powermock-module-junit4</artifactId>
    <version>1.5.5</version>
    <scope>test</scope>
    <exclusions>
        <exclusion>
            <groupId>org.javassist</groupId>
                <artifactId>javassist</artifactId>
        </exclusion>
    </exclusions>      
</dependency>
<dependency>
    <groupId>org.javassist</groupId>
    <artifactId>javassist</artifactId>
    <version>3.20.0-GA</version>
    <scope>test</scope>
</dependency>
17
Prashant
    <dependency>
        <groupId>org.javassist</groupId>
        <artifactId>javassist</artifactId>
        <version>3.22.0-GA</version>
    </dependency>
    <dependency>
        <groupId>org.powermock</groupId>
        <artifactId>powermock-module-junit4</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.javassist</groupId>
                <artifactId>javassist</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
2
DavidAyala