gpt4 book ai didi

spring-boot - Spring Boot 单元测试端点 NullPointerException - 以及如何达到 100% 的覆盖率

转载 作者:行者123 更新时间:2023-11-28 21:38:21 33 4
gpt4 key购买 nike

我是 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”。我如何实现这一点?

最佳答案

您的对象 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();
}
}
}

关于spring-boot - Spring Boot 单元测试端点 NullPointerException - 以及如何达到 100% 的覆盖率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55281169/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com