<Spring과 jUnit 연동>
junit으로 테스트할 땐 서버를 실행되지 않는다. 하지만 dao를 주입받아 쓰려면 컨테이너객체가 생성되어야함
=> 서버를 돌리지 않은 상태에서 컨테이너 객체를 생성하게 하는 어노테이션: @ContextConfiguration
이때 형성되는 컨테이너: 애플리케이션 context.
테스트할 dao가 웹 어플리케이션 컨텍스트의 하위 객체가 되어야함. @WebApplicationConfiguration
+ test할때 자동 롤백되어야함 . => AOP 적용해 @Transactional을 넣어주자.
<컨트롤러를 대상으로 테스트하기>
컨트롤러는 request가 있어야함. Mock 객체를 사용하면 Mock req, Mock resp 만들 수 있음.
=>Spring의 MVC test module을 사용하면 됨
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; //상태코드 검증
@RunWith(SpringRunner.class)
@WebAppConfiguration
@ContextConfiguration("test-servlet-context.xml")
public class ExampleTests {
@Autowired
private WebApplicationContext wac;
private MockMvc mockMvc;
@Before
public void setup() {
this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).build();
}
@Test
public void getAccount() throws Exception {
this.mockMvc.perform(get("/accounts/1")
.accept(MediaType.parseMediaType("application/json;charset=UTF-8")))
.andExpect(status().isOk()) //상태코드 200을 체크
.andExpect(content().contentType("application/json")) //@ResponseBody 본다
.andExpect(jsonPath("$.name").value("Lee"));
//테스트중
}
}
1. WebApplicationContext 주입받기
2. MockMVC 주입받기
- standalone으로 컨트롤러 하나하나씩 세팅 또는
- 모든 컨트롤러 세팅
<서버가 동작하지않아도 sampleListener가 동작하게 하기>
EDD (Event Driven Development): Event Handler를 먼저 만들고 로직을 바꿔나감
TDD (Test Driven Development) :테스트 케이스를 먼저 만들고 타겟을 테스트 케이스에 맞춰 개발
SampleListener는 web.xml에 등록되어있다. = 톰캣이 관리한다. = 컨테이너 밖에있다. = 컨테이너 안에 있는 것들은 주입받을 수 없다.
컨테이너 안에 있는 것 주입 받으려면
- web.xml에서 지우기
- pojo로 개발
- 실행하면 떠야하니까 상위 컨테이너에 등록 @Component
- ServletContext를 init() 안에서 값 넣어주기
- 메서드들에 @EventListener(value=ContextRefreshedEvent.class) 또는 ContextClosedEvent.class 달기
- 해당 이벤트들은 스프링이 관리하는 이벤트가 된다.
'JAVA > Spring Framework' 카테고리의 다른 글
추상 클래스로 view 만들기, properties 파일 사용해 폴더 위치 지정하기 (0) | 2020.10.13 |
---|---|
알바 관리 메이븐 프로젝트에 Spring 적용하기 (0) | 2020.10.12 |
스프링 프레임워크 AOP (0) | 2020.10.12 |
자바 Spring 에서 serviceImpl NullPointerException 해결하기 (리스너 관련) (0) | 2020.10.09 |
스프링 하위 컨테이너 설정 xml (servlet-context.xml) (0) | 2020.10.09 |