2015-10-14 3 views
0

Я пытаюсь издеваться класс, который содержит лямбда-выражения в методе, -как в примере ниже - и он терпит неудачу в инициализации:Дразнящий класс, который содержит лямбда-выражения с 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, Mockito 1.10.19

Если бы я сделать это в очевидно, что это новый проект. Проблема возникает только в существующем проекте, над которым я работаю.

В чем моя проблема?

+0

Я не вижу никаких насмешек. Я что-то пропустил? Lambdas - это просто синтаксический сахар для одного класса методов, поэтому вы можете определенно имитировать их, но не, если вы не можете предоставить их в качестве параметра. –

+0

Ошибка при инициализации. Это означает, что он не приходит, чтобы увидеть даже методы тестирования. – user3657103

ответ

3

Я решил проблему. Порядок зависимостей в pom был неправильным.

Оказалось, что заказ имеет значение.

Зависимость от javassist должна применяться после зависимостей powermock.

+1

Было бы хорошо принять этот ответ и рассказать нам, какие предметы в pom были не в порядке, чтобы кто-нибудь застрял в одной и той же проблеме. –

Смежные вопросы