JMockit переделка с NonStrictExpectations на Expectations

В связи с обновлением версии Java с 1.6 на 1.8 на одном из проектов перестал нормально работать древний JMockit. Версия JMockit была очень древней, да и сам проект был старым. Разбираться, почему старая библиотека не работает в новой Java, не очень хочется. Раз уж уже обновили Java, то заодно обновим и JMockit с 0.999.19 на 1.44.

Тут же полезли проблемы:

  • В новой версии JMockit нет класса NonStrictExpectations.
  • В новой версии JMockit нет аннотации NonStrict.

NonStrictExpectations cannot be resolved to a type

cannot find symbol
symbol: class NonStrictExpectations

Как быть, что делать? Почитал release notes для JMockit. Судя по всему, нужно использовать Expectations вместо NonStrictExpectations и указывать minTimes = 0, а вместо @NonStrict использовать либо аннотацию @Mocked, либо @Injected.

Исходный код:

Конечный результат:

Как видим, я заменил @NonStrict на @Mocked и вынес его в параметры, так как в качестве поля он не работает. Я проверял. И в официальной документации нет варианта, где @Mocked используется в качестве поля Expectations. Класс NonStrictExpectations был заменен на Expectations.

Вот так я починил тесты на JMockit при переходе на новую версию. Удаление NonStrictExpectations, конечно, сломало им обратную совместимость.

Да, куски кода в статьи стало сложно вставлять. Нужно чинить Crayon Syntax Highlighter.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *