Модульное тестирование Mock Service Impl - PullRequest
1 голос
/ 12 марта 2019

У меня есть сервис и сервис тоже в приложении с весенней загрузкой.Когда я хочу проверить его и попытаться смоделировать свой сервис в тестовом классе junit, я получаю ошибку NullPointerException.

вот мой сервис impl

package com.test;

import java.util.Date;

public class MyServiceImpl implements MyService {
    @Override
    public MyObject doSomething(Date date) {
        return null;
    }
}

и вот мой тестовый класс

package com.test;

import com.netflix.discovery.shared.Application;
import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.TestPropertySource;
import org.springframework.test.context.junit4.SpringRunner;
import static org.junit.jupiter.api.Assertions.assertNull;

@RunWith(SpringRunner.class)
@SpringBootTest(classes = Application.class)
@AutoConfigureMockMvc
@TestPropertySource(locations = "classpath:application-integrationtest.properties")
class MyServiceImplTest {

    @Mock
    MyService myservice;

    @Test
    void doSomethingTest() {
        assertNull(myservice.doSomething(null));
    }
}

1 Ответ

4 голосов
/ 12 марта 2019

Вам нужно инициализировать свои макеты при использовании аннотаций @Mock.Вы можете сделать это способом, аннотированным @Before:

@Before public void initMocks() {
    MockitoAnnotations.initMocks(this);
}

В качестве альтернативы вы можете изменить своего бегуна с SpringRunner на:

@RunWith(MockitoJUnitRunner.class)

Редактировать:

Также вы должны создать bean-компонент из вашей реализации:

@Service
public class MyServiceImpl implements MyService
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...