Spring Boot Unit тестирование конечной точки NullPointerException - и как достичь 100% покрытия - PullRequest
0 голосов
/ 21 марта 2019

Я новичок в тестировании Spring Boot и пытаюсь выполнить тестирование и определение конечной точки. Следуя инструкциям, я сделал это:

@RunWith(SpringRunner.class)
@ContextConfiguration(classes = SpringMiddlewareApplication.class)
@ComponentScan("com.springmiddleware")
@SpringBootTest
public class SpringMiddlewareApplicationTests {

private MockMvc mvc;

@Test
public void returnsString() {
    try {
        this.mvc.perform(get("/home")).andExpect(status().isOk())
        .andExpect(content().string(containsString("You are in the home page")));
    } catch (Exception e) {
        e.printStackTrace();
    }
}

Если я запускаю тест, он проходит, но в консоли отображается следующая ошибка:

java.lang.NullPointerException
at com.example.demo.SpringMiddlewareApplicationTests.returnsString

Класс RestController имеет следующий вид:

@RestController
public class FirstController {


    /**
     * Welcome page
     * 
     * @return String
     */
    @GetMapping("/home")
    public String homePage() {
        return "You are in the home page";
    }

Что вызывает ошибку?
Также, даже если этот тест пройден, под управлением Jacoco у меня нет покрытия для метода «homePage». Как мне этого добиться?

1 Ответ

0 голосов
/ 21 марта 2019

Ваш объект MVC является нулевым!Тестовый класс должен выглядеть так:

@RunWith(SpringRunner.class)
@ContextConfiguration(classes = SpringMiddlewareApplication.class)
@ComponentScan("com.springmiddleware")
@SpringBootTest
public class SpringMiddlewareApplicationTests {

    private MockMvc mvc;

    @Autowired
    private FirstController firstController;

    @Before
    public void init() {
        mvc = MockMvcBuilders.standaloneSetup(firstController)
                .addPlaceholderValue("server.servlet.context-path", "example").build();

    }

    @Test
    public void returnsString() {
        try {
            this.mvc.perform(get("/home")).andExpect(status().isOk())
                    .andExpect(content().string(containsString("You are in the home page")));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
...