PowerMock和Java 8问题:不能将InterfaceMethodrefInfo强制转换为MethodrefIn



我在尝试使用PowerMock和Mockito执行单元测试时遇到问题。我需要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

我在PowerMock Google的官方页面上读到,这与javassist有关。但我有点迷路了,我不知道怎么解决。

为了以防万一,我还尝试下载Powermock的最新SNAPSHOT(1.6.3-SNAPSHOT(,但也不起作用。

有人能帮我吗?

提前感谢

根据Francisco González的回答,这就是我必须做的:

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

是的,这就是问题所在。PowerMock有一个对javassist的依赖,所以我只需要在pom中排除这个可传递的依赖,然后再包括对固定版本的javassist。这对我很管用。谢谢!

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

红鲱鱼

当我在Android开发过程中遇到这个问题时,我只是对现有文件进行了一次测试。

删除测试并一次重新添加一行,我发现根本问题与TreeSet及其比较器的实例化方式有关。

YMMV。

相关内容

  • 没有找到相关文章

最新更新