使用PowerMock模拟包含lambda表达式的类

时间:2015-10-14 09:12:15

标签: java unit-testing junit lambda powermock

我试图在一个方法中模拟一个包含lambda表达式的类,如下例所示 - 它在初始化时失败了:

@RunWith(PowerMockRunner.class)
@PrepareForTest(MyClass.class)
public class MyClassTest {}

public class MyClass {   

    public void letsSeeLambda() {
        this.forTesting((a, b) -> true);
    }

    private void forTesting(Filter filter) {
        filter.process(5, 6);
    }
}

出现的错误如下:

  

java.lang.IllegalStateException:无法转换名为..... MyClass的类。   原因:java.io.IOException:无效的常量类型:18       在......

我使用的是powermock 1.6.3,junit 4.12,mockito 1.10.19

如果我在一个新项目中这样做,很明显。问题仅发生在我正在处理的现有项目中。

我的问题是什么?

1 个答案:

答案 0 :(得分:3)

我解决了这个问题。 pom中依赖项的顺序不正确。

事实证明这个命令很重要。

javassist依赖项必须在powermock依赖项之后出现。