2015-07-02 10 views
11

У меня возникли проблемы при попытке выполнить единичный тест с помощью PowerMock с помощью Mockito. Мне нужно, чтобы PowerMockito издевался над статическим методом.Проблема PowerMock и Java 8: InterfaceMethodrefInfo не может быть передана методу MethodrefInfo

Эти версии I'm с помощью:

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), но не работал.

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

Заранее благодарен

+1

Ну в системе отслеживания проблем в Javassist произошла ошибка, связанная (https://issues.jboss.org/browse/JASSIST-220) к этому исключению, а г-н Чиба объединил запрос на тягу 22 июля 2014 года (https://github.com/jboss-javassist/javassist/pull/11). Мое первое предложение состояло в том, чтобы убедиться, что вы используете последнюю версию javassist и обновляете до последней версии. – pabrantes

+0

добавьте этот комментарий как свой собственный ответ и принимайте его, чтобы вопрос не остался без ответа. Спасибо :) – pabrantes

ответ

1

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

+3

упомянуть конкретные версии с проблемами и исправлениями, а пример pom очень помог бы людям. –

11

После Francisco González's ответ, это то, что я должен был сделать:

<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> 
+0

Это * НЕ работает *, если другая зависимость вашего проекта зависит от 'javassist' (e.x. hibernate). Вы должны удалить ' тест', когда вы добавляете зависимость javassist'. – Arashsoft

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

  • Нет связанных вопросов^_^