일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- gdg
- GC
- load balancing
- Producer
- tomcat
- jvm
- 스프링
- JWT
- OAuth
- 페이스북
- 비동기
- apache
- 리팩토링
- clean code
- Security
- oauth2
- RabbitMQ
- assertj
- 클린코드
- JPA
- g1
- 시큐리티
- 권한
- Spring
- 페이징
- 스프링부트
- 스프링 부트
- spring boot
- Refactoring
- java
Archives
- Today
- Total
허원철의 개발 블로그
Spring Boot - Test 본문
이번 글은 spring boot 에 Test에 대한 글 입니다.
How..?
① Gradle 설정
dependencies {
compile('org.projectlombok:lombok')
compile('org.springframework.boot:spring-boot-starter-web')
testCompile('org.springframework.boot:spring-boot-starter-test')
}
② 종류
spring boot에서는 Gradle에 testCompile을 추가해주면 많은 테스팅 도구를 제공합니다.
간단하게 java에서 사용될 수 있는 앞 포스팅(Java - JUnit & AssertJ)에서 해봤습니다. 오늘은 SpringTest, Assertj, Mockito를 이용하여 테스트 를 해보려고 합니다.
③ Test
- 테스트 이전에 간단하게 controller, vo, service 를 추가해줍니다.(Test를 위해서...ㅎ)
[Controller]
[Vo]
[Service]
- SpringTest 에서는 TestRestTemplete 라는 것을 제공합니다. 이는 url를 이용하여 반환 값을 테스트할 수 있습니다.
import static org.assertj.core.api.Assertions.*;
// 중략 ..
@Autowired
private TestRestTemplate restTemplate;
// 중략 ..
@Test
public void test() {
String result = restTemplate.getForObject("/test?flag=0", String.class);
assertThat(result)
.isEqualTo("Spring Boot Service Test");
}
여기서 TestRestTemplete 는 getForObject 와 getForEntity 를 제공하는데 getForObject는 객체로 반환하고, getForEntity는 Http ResponseEntity 로 반환 합니다.
- @MockBean을 이용하면 ApplicationContext 안에 Mockito mock인 bean을 사용할 수 있습니다.
import static org.assertj.core.api.Assertions.*;
import static org.mockito.BDDMockito.*;
// 중략 ..
@MockBean
private BasicService service;
// 중략 ..
@Test
public void mockTest() throws Exception {
given(service.test(0))
.willReturn("Spring Boot Service Test");
assertThat(service.test(0))
.isEqualTo("Spring Boot Service Test");
//given(service.test(1))
// .willReturn("Spring Boot Service Test");
}
given.. 과 assertThat... 은 동일한 작업입니다.
- @WebMvcTest를 이용하면 사용자가 사용할 수 있는 예상대로 작동됩니다.
@RunWith(SpringRunner.class)
@WebMvcTest(BasicController.class)
public class MockMvcTest {
@Autowired
private MockMvc mvc;
@MockBean
private BasicService service;
@Test
public void test() throws Exception {
JSONObject json = new JSONObject();
json.put("name", "wonchul");
json.put("type", 0);
given(service.jsonTest())
.willReturn(new TestVo("wonchul", 0));
mvc.perform(get("/jsonTest")
.accept(MediaType.APPLICATION_JSON_UTF8))
.andExpect(status().isOk())
.andExpect(content().json(json.toString()));
}
}
mvc.perform 을 이용하여 url에 해당되는 예상되는 반환처리를 해볼 수 있습니다.
참고
'web' 카테고리의 다른 글
Spring Boot - Custom Jackson Converter (415) | 2016.12.05 |
---|---|
Spring Boot - Cache (412) | 2016.12.05 |
Spring Boot - AOP (424) | 2016.12.04 |
Spring Boot - Interceptor (410) | 2016.12.04 |
Spring Boot - Social (Facebook) (411) | 2016.12.04 |
Comments