2015-10-14 95 views
0

我试图嘲弄其中包含的方法lambda表达式类lambda表达式,在下面的例子 - 作为一类 - 它在初始化失败:惩戒包含与PowerMock

@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,19年1月10日的Mockito

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

我的问题是什么?

+0

我没有看到任何嘲笑。我错过了什么? Lambdas只是一种方法类的语法糖,所以你可以肯定地嘲笑它们,但是如果你不能提供它们作为参数,那么就不能。 –

+0

错误在初始化。这意味着它甚至无法看到甚至是测试方法。 – user3657103

回答

3

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

事实证明,订单很重要。

javassist依赖项必须在powermock依赖关系后面出现。

+1

这将是很好的接受这个答案,并告诉我们在POM中的哪些项目失灵,因此任何卡在同一问题上的人都可以学习。 –