#spring #nullpointerexception #mocking #annotations #mockito
#spring #исключение nullpointerexception #издевательство #аннотации #mockito
Вопрос:
Я использую Mockito для создания макетных компонентов, и по какой-то причине, когда я инициализирую макет с помощью @RunWith(MockitoJUnitRunner.class ), я получаю сообщение об ошибке при вызове метода из издевательского класса. Однако, если я инициализирую с помощью @beforeEach , все работает нормально. чтобы быть более конкретным:
@RunWith(MockitoJUnitRunner.class)
class Test {
@Mock
Bean mockBean;
@Test
void testGet() {
Mockito.when(mockBean.method()).thenReturn(2);
assertEquals(2, mockBean.method());
}
Приведенное выше приводит к ошибке NullPointException в строке Mockito.when(mockBean.method()).thenReturn(2);
Однако, если я сделаю следующее:
class Test {
@Mock
Bean mockBean;
@BeforeEach
public void init() {
MockitoAnnotations.initMocks(this);
}
@Test
void testGet() {
Mockito.when(mockBean.method()).thenReturn(2);
assertEquals(2, mockBean.method());
}
тест выполняется просто отлично. У меня сложилось впечатление, что они должны работать одинаково. Я был бы признателен, если бы кто-нибудь мог сказать мне, что я делаю неправильно или неправильно.
Комментарии:
1. Возможно, вы смешиваете JUnit4 и 5. В 5 класс и тесты не должны
public
, но@RunWIth
должны быть@ExtendWith(MockitoExtension.class)
. Вероятно, вам также понадобится более новая версия Mockito.2. Не могли бы вы добавить свой импорт?