Подтвердить что ты не робот

Проблема PowerMock и Java 8: InterfaceMethodrefInfo не может быть передан в MethodrefInfo

У меня возникли проблемы при попытке выполнить unit test с помощью PowerMock с Mockito. Мне нужно, чтобы PowerMockito издевался над статическим методом.

Это версии, которые я использую:

PowerMock 1.6.2
Mockito 1.10.19
JUnit 4.12
Java 8

Когда я добавляю аннотацию @PrepareForTest (Graph.class), я получаю следующую ошибку:

java.lang.IllegalStateException: Failed to transform class with name     name.of.my.package.GraphUtil. Reason: javassist.bytecode.InterfaceMethodrefInfo cannot be cast to javassist.bytecode.MethodrefInfo

Я прочитал на официальной странице PowerMock Google, что это связано с javassist. Но я немного потерял, и я не знаю, как это исправить.

На всякий случай, я также попробовал загрузить последнюю версию SNAPSHOT от Powermock (1.6.3-SNAPSHOT), но не работал.

Может ли кто-нибудь помочь мне, пожалуйста?

Заранее спасибо

4b9b3361

Ответ 1

Да, это была проблема. PowerMock имеет зависимость от javassist, поэтому мне просто пришлось исключить эту транзитивную зависимость в моем пом, а позже включить зависимость от фиксированной версии javassist. И это сработало для меня. Благодарю!

Ответ 2

Следуя Франциско Гонсалесу, вот что я должен был сделать:

<dependency>
    <groupId>org.powermock</groupId>
    <artifactId>powermock-module-junit4</artifactId>
    <version>1.5.5</version>
    <scope>test</scope>
    <exclusions>
        <exclusion>
            <groupId>org.javassist</groupId>
                <artifactId>javassist</artifactId>
        </exclusion>
    </exclusions>      
</dependency>
<dependency>
    <groupId>org.javassist</groupId>
    <artifactId>javassist</artifactId>
    <version>3.20.0-GA</version>
    <scope>test</scope>
</dependency>