Исключение нулевого указателя Mockito при инициализации с использованием аннотации @RunWith при издевательстве

#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. Не могли бы вы добавить свой импорт?