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

Java 使用PowerMock模拟包含lambda表达式的类,java,unit-testing,junit,lambda,powermock,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); } priv

我试图模拟一个方法中包含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

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

我的问题是什么?

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

结果证明顺序很重要

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

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

结果证明顺序很重要

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

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

结果证明顺序很重要

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

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

结果证明顺序很重要


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

我没有看到任何Mock。我错过什么了吗?lambda只是一个方法类的语法糖,因此您可以明确地模拟它们,但如果不能将它们作为参数提供,则不能。错误在于初始化。这意味着它甚至没有看到测试方法。我没有看到任何模拟。我错过什么了吗?lambda只是一个方法类的语法糖,因此您可以明确地模拟它们,但如果不能将它们作为参数提供,则不能。错误在于初始化。这意味着它甚至没有看到测试方法。我没有看到任何模拟。我错过什么了吗?lambda只是一个方法类的语法糖,因此您可以明确地模拟它们,但如果不能将它们作为参数提供,则不能。错误在于初始化。这意味着它甚至没有看到测试方法。我没有看到任何模拟。我错过什么了吗?lambda只是一个方法类的语法糖,因此您可以明确地模拟它们,但如果不能将它们作为参数提供,则不能。错误在于初始化。这意味着它甚至没有看到测试方法。最好接受这个答案,告诉我们pom中哪些项目出了问题,这样任何人都可以在同一问题上学习。最好接受这个答案,告诉我们pom中哪些项目出了问题,这样任何人都可以在同一问题上学习。最好接受此答案,并告诉我们pom中的哪些项目出现故障,以便任何陷入同一问题的人都可以学习。最好接受此答案,并告诉我们pom中的哪些项目出现故障,以便任何陷入同一问题的人都可以学习。