개발에 있어서 테스트 코드는 중요하다.
테스트 중에서 단위 테스트는 기능 단위의 테스트 코드를 작성한다.
필자는 첫 회사인 씨xx에 입사를 했을 때 테스트 코드가 뭔지도 몰랐고, 회사에 있는 선임은 테스트 코드가 아닌 개발 방식을 사용해왔기에 실무에서는 코드를 짜고 바로 배포하고 화면에서 눈으로 확인하는 것인 줄 알았다.
그래서 개발을 할 때면
- 백단 코드 작성
- war로 묶어서 export
- war을 서버에 설치되어있는 톰캣 서버로 파일 질라를 통해서 이동
- 톰캣 Stop, Start
- 인터넷 익스플로러를 켜서 화면에서 백단 코드와 연관되어있는 버튼 클릭
- 성공 또는 실패
- 실패시 1~5번 반복
이런 식으로 개발을 했었다.
그러다가 두 번째 회사로 이직을 하면서 TDD을 배우면서 테스트 코드가 뭔지 알게 되었고, 어떤 식으로 테스트 코드를 써서 나가는지 알게 되었다.
그럼 이제 테스트 코드는 어떤 식으로 해나가는지 차근차근 알아보도록 하자.
- 아래와 같이 소스 코드를 먼저 작성한다.
HelloController.java
package com.incheol.app.web;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@GetMapping("/hello")
public String hello() {
return "hello";
}
}
- 테스트 패키지로 가서 테스트 코드를 작성한다.
HelloControllerTest.java
package com.incheol.app.web;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.servlet.MockMvc;
@RunWith(SpringRunner.class)
@WebMvcTest // Web(Spring MVC)에 집중할 수 있는 어노테이션
public class HelloControllerTest {
@Autowired
private MockMvc mvc; //웹 API을 테스트 할때 사용하는 가짜 데이터 , GET, POST 등에 대한 테스트를 할 수 있음.
@Test
public void returnHello() throws Exception {
String hello = "hello";
//테스트를 하는 행위(perform) => 하나씩 기대 값을 넣고 테스트를 한다.
mvc.perform(get("/hello")) // Get에 대한 주소를 가져오는 행위를 한다.
.andExpect(status().isOk()) // 상태가 200 값을 기대하며 기대 값과 결과가 같다면 테스트는 다음으로 넘어간다.
.andExpect(content().string(hello)); // hello의 값을 기대하며 기대 값과 결과가 같다면 모든 테스트를 통과한다.
}
}
- JUnit을 실행하고 모든 테스트가 무사히 통과 되면 화면 왼쪽에 테스트가 통과했다는 초록색 바가 뜬다.
4. 테스트 코드까지 작성 했으니, 실제로 웹 화면에서 'hello' 가 뜨는지 확인해보자.
이렇게 항상 코드 작성 후 에는 테스트 코드가 중요하다.
앞으로 필자와 함께 테스트 코드에 대해서 하나 하나 알아가 보도록 하자.
테스트 코드가 습관화가 되도록 노력해보자.
'IT > Spring' 카테고리의 다른 글
[SpringBoot] 파일 다운로드 (0) | 2020.07.02 |
---|---|
[JPA] JPA Auditing (0) | 2020.02.16 |
[JUnit] 테스트 기본 - 2 (0) | 2020.02.13 |
[JPA] 트랜잭션과 락 (0) | 2020.02.12 |
[STS4] Mac 단축키 변경 (자동완성) (0) | 2020.02.11 |