PowerMock 和 Java 8 问题:InterfaceMethodrefInfo 无法转换为 MethodrefInfo
PowerMock and Java 8 issue: InterfaceMethodrefInfo cannot be cast to MethodrefInfo
我在尝试使用 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),但也没有用。
有人能帮帮我吗?
提前致谢
是的,这就是问题所在。 PowerMock 对 javassist 有依赖性,所以我只需要在我的 pom 中排除该传递依赖性,然后再包含对固定版本的 javassist 的依赖性。这对我有用。谢谢!
根据 的回答,这就是我必须做的:
<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>
<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.
我在尝试使用 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),但也没有用。
有人能帮帮我吗?
提前致谢
是的,这就是问题所在。 PowerMock 对 javassist 有依赖性,所以我只需要在我的 pom 中排除该传递依赖性,然后再包含对固定版本的 javassist 的依赖性。这对我有用。谢谢!
根据
<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>
<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.