我正在尝试编写我的第一个 Spring MVC 测试,但我无法让 Spring Boot 将 MockMvc 依赖项注入我的测试类。这是我的课:
@WebMvcTest
public class WhyWontThisWorkTest {
private static final String myUri = "uri";
private static final String jsonFileName = "myRequestBody.json";
@Autowired
private MockMvc mockMvc;
@Test
public void iMustBeMissingSomething() throws Exception {
byte[] jsonFile = Files.readAllBytes(Paths.get("src/test/resources/" + jsonFileName));
mockMvc.perform(
MockMvcRequestBuilders.post(myUri)
.content(jsonFile)
.contentType(MediaType.APPLICATION_JSON))
.andExpect(MockMvcResultMatchers.status().is2xxSuccessful());
}
}
我已经检查了 IntelliJ 的调试器,可以确认 mockMvc 本身是空的。因此,所有异常消息告诉我的是“java.lang.NullPointerException”。
我已经尝试为“@SpringBootTest”或“@RunWith(SpringRunner.class)”等测试类添加更多通用的 Spring Boot 注释,以防它与初始化 Spring 有关但没有成功。
原文由 ElDuderino 发布,翻译遵循 CC BY-SA 4.0 许可协议
奇怪,前提是您还尝试过
@RunWith(SpringRunner.class)
和@SpringBootTest
。您是否也尝试过@AutoConfigureMockMvc
注释?下面的示例工作正常。完整样本 在这里
考虑以下有关 @WebMvcTest 和 @AutoConfigureMockMvc 注释的用法的评论也可能是值得的,如 Spring 文档 中所述