web-dev-qa-db-ja.com

PowerMockおよびJava 8の問題:InterfaceMethodrefInfoをMethodrefInfoにキャストできない

MockitoでPowerMockを使用して単体テストを実行しようとすると問題が発生します。静的メソッドをモックするにはPowerMockitoが必要です。

これらは私が使用しているバージョンです:

PowerMock 1.6.2
Mockito 1.10.19
JUnit 4.12
Java 8

アノテーション@PrepareForTest(Graph.class)を追加すると、次のエラーが発生します。

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

これはjavassistに関連していることをPowerMockの公式Googleページで読みました。しかし、私は少し迷っていて、それを修正する方法がわかりません。

念のため、Powermockの最新のSNAPSHOT(1.6.3-SNAPSHOT)もダウンロードしてみましたが、どちらも機能しませんでした。

誰か助けてもらえますか?

前もって感謝します

18

はい、それが問題でした。 PowerMockにはjavassistへの依存関係があるため、私はpomでその一時的な依存関係を除外し、後で修正バージョンのjavassistへの依存関係を含める必要がありました。そしてそれは私のために働いた。ありがとう!

4

FranciscoGonzález's の回答に続いて、これは私がしなければならなかったことです:

<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>
21
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>
3
DavidAyala