반응형
Spring boot 환경에서 Controller의 Test를 만드는 중, @Autowired된 클래스가 null이 되는 현상이 발생했습니다.
해결방법은 다음과 같습니다.
1. 개발 환경
1) OS : Windows 10
2) 개발 툴 : IntelliJ
3) 빌드 툴 : Maven
4) java version : openjdk 1.8
5) spring boot version : 2.3.1
5) JUnit version : 4
2. 테스트 코드
@AutoConfigureMockMvc
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.MOCK)
public class MyTest {
@Autowired
MockMvc mockMvc;
@Test
public void commonLogin() throws Exception {
log.debug("START dummy test");
MvcResult mvcResult = mockMvc.perform(post("/test")
.param("L_TYPE", "dummy")
)
.andExpect(status().isOk())
.andDo(print())
.andReturn();
MockHttpServletResponse response = mvcResult.getResponse();
assertEquals(200, response.getStatus());
}
}
3. 해결방법
소스코드에 @RunWith( SpringJUnit4ClassRunner.class ) 를 추가하면 됩니다.
해당 내용을 추가한 내용은 다음과 같습니다.
@AutoConfigureMockMvc
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.MOCK)
@RunWith(SpringJUnit4ClassRunner.class)
public class MyTest {
@Autowired
MockMvc mockMvc;
@Test
public void commonLogin() throws Exception {
log.debug("START dummy test");
MvcResult mvcResult = mockMvc.perform(post("/test")
.param("L_TYPE", "dummy")
)
.andExpect(status().isOk())
.andDo(print())
.andReturn();
MockHttpServletResponse response = mvcResult.getResponse();
assertEquals(200, response.getStatus());
}
}
참고 사이트 : stackoverflow.com/questions/17623694/spring-not-autowiring-in-unit-tests-with-junit
728x90
반응형
'웹 개발' 카테고리의 다른 글
spring에서 autowired 대신 생성자 주입을 사용해야 하는 이유 (0) | 2021.05.12 |
---|---|
java] file path에서 파일명만 가져오는 방법 (0) | 2021.05.02 |
Java - ArrayBlockingQueue 사용 방법 (0) | 2021.01.01 |
Spring 버전 확인하는 방법 (1) | 2021.01.01 |
Spring boot Profile 설정 (0) | 2021.01.01 |