2015-10-14 101 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中的哪些項目失靈,因此任何卡在同一問題上的人都可以學習。 –