Spring Boot + TestNG + MockMVC 为@Autowired 提供 Null

Spring Boot + TestNG + MockMVC gives Null for @Autowired

我是 Spring-Boot、TestNG 和 MockMVC 的新手,当我尝试编写 TestNG 测试用例时,它为以下内容提供 Null:

@Autowired
private WebApplicationContext webApplicationContext;

并且它为

提供空值
@BeforeTest
public void start()
{
     mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();
}

此外,基于之前来自 Whosebug 的 post,通过移动

mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();@Test 问题也没有解决。

下面是我的代码片段

@Autowired
private WebApplicationContext webApplicationContext;

private MockMvc mockMvc;

@BeforeTest
public void setup() {
    mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();
}

@Test
public void testEmployee() throws Exception {
    mockMvc.perform(get("/employee")).andExpect(status().isOk())
        .andExpect(content().contentType("application/json;charset=UTF-8"))
        .andExpect(jsonPath("$.name").value("emp1")).andExpect(jsonPath("$.designation").value("manager"))
        .andExpect(jsonPath("$.empId").value("1")).andExpect(jsonPath("$.salary").value(3000));
}

任何 link 或共享的工作示例都会有很大帮助。

谢谢

如果你想自动装配 WebApplicationContext,你的测试 class 应该用 @ContextConfiguration@WebAppConfiguration.

注释

您可以找到一个示例 here(Spring Framework 的官方存储库)。