[ERROR] MockMvc NullPointerException Spring Boot
- ERROR
- 2020. 9. 11.
반응형
1. 문제
JUnit test에서 MockMvc를 사용할 때 Configure가 MockMvc를 제대로 찾지 못해 NullPointerException이 발생할 수 있다.
2. 원인
아래와 같이 MockMvc를 @Before에서 setup 하고 있는데 왜 에러가 발생하는지는 잘 모르겠다.
변경전
@RunWith(SpringRunner.class)
@SpringBootTest
class HelloResourceTest {
private MockMvc mockMvc;
@InjectMocks
private HelloResource helloResource;
@Before
public void setUp() throws Exception {
mockMvc = MockMvcBuilders.standaloneSetup(helloResource)
.build();
}
@Test
public void testHelloWorld() throws Exception{
mockMvc.perform(
MockMvcRequestBuilders.get("/hello"))
.andExpect(MockMvcResultMatchers.status().isOk())
.andExpect(MockMvcResultMatchers.content().string("Hello World!"));
}
}
3. 해결
Test 상단에 @AutoConfigureMockMvc을 추가하고, 기존에 @Before에서 setup하던 MockMvc를 @Autowired로 주입받아 사용하면 된다. @InjtectMocks도 사용할 필요가 없어진다.
변경후
@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc
class HelloResourceTest {
@Autowired
private MockMvc mockMvc;
// @InjectMocks
// private HelloResource helloResource;
@Before
public void setUp() throws Exception {
// mockMvc = MockMvcBuilders.standaloneSetup(helloResource)
// .build();
}
@Test
public void testHelloWorld() throws Exception{
mockMvc.perform(
MockMvcRequestBuilders.get("/hello"))
.andExpect(MockMvcResultMatchers.status().isOk())
.andExpect(MockMvcResultMatchers.content().string("Hello World!"));
}
}
위와 같이 변경하면, 아래와 같이 Test가 통과한다.
추천서적
파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음
반응형