2012-03-28 2 views
2

Мы обновили файл mockito-all-1.8.5.jar до mockito-all-1.9.0.jar и теперь видим нулевые указатели при использовании аннотаций для издевающихся классов. Ниже приведен пример:Обновление Mockito вызывает проблемы с нулевым указателем

 
    @Mock 
    private static IAccountManager accountManager; 
    @Mock 
    private static IBusinessUnitManager businessUnitManager; 
    private static Gson parser;

@InjectMocks private static DownloadController downloadController;

@BeforeClass public static void setUpBeforeClass() throws Exception { parser = new Gson();

downloadController = new DownloadController(accountManager, 
    businessUnitManager, parser); 

}

@Before общественная недействительная нАлАдкА() бросает исключение { MockitoAnnotations.initMocks (это); Mockito.reset (accountManager, businessUnitManager); }

Как только accountManager ссылается на контроллер загрузки, он выдает npe. Это работало в 1.8.5.

+2

Это потому, что ваши поля являются статическими? – Dunes

+0

Да, оказывается, мне пришлось удалить @InjectMocks, так как не все параметры могли быть введены и удалены статические из DownloadController. Если вы хотите переместить свой комментарий в ответ, я его выберу. –

+0

ahh, длинный день. Впрыснутый я имел в виду насмешку ... lol –

ответ

4

Причина, по которой впрыскиваемые издевательства потерпели неудачу, состоит в том, что они являются статическими полями. Статические поля обычно зарезервированы для полей, которые остаются постоянными и не изменяются от теста к тесту и иногда могут быть дорогостоящими для создания экземпляров. Это обратное для полей экземпляра, где для каждого тестового метода создается новый экземпляр тестового класса (таким образом, он имеет «сброс» полей экземпляра). Казалось бы, Mockito придерживается этой философии и не пытается создавать статические поля.

Исправление состоит в том, чтобы сделать ваши поля не статическими или если они вам нужны, чтобы статические, а затем установите их в методе BeforeClass.

4

Вы можете посмотреть http://code.google.com/p/mockito/issues/detail?id=327 по регистру проблем Mockito. Если это проблема, с которой вы столкнулись, она уже исправлена ​​и будет выпущена в версии 1.9.1 Mockito. Если вы считаете, что ваша проблема отличается от этой, перейдите на страницу http://code.google.com/p/mockito/issues и поднимите ее, чтобы ее можно было исправить.

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