TDD (Test-Driven-Development)란 테스트가 주도하는 개발이다. 테스트 코드를 먼저 작성하는 것 부터 시작. 선 개발 후 테스트 형식이 아니라 선 테스트 후 개발 방식의 프로그래밍 방법론을 일컫는다.
반면 단위 테스트는 기능 단위의 테스트 코드를 작성하는 것이다. 단위 테스트 코드를 작성함으로써 얻는 이점으로는 다음과 같다.
- 개발단계 초기에 문제를 발견하게 도와준다.
- 기능에 대한 불확실성을 감소시킬 수 있다.
- 시스템에 대한 실제 문서를 제공한다.
- Junit - Java
- DBUnit - DB
- CppUnit - C++
- NUnit - .net
프로젝트 -> src -> main -> java 디렉토리에 패키지를 추가하고, 패키지안에 "Application"의 이름을 가진 클래스를 생성 후 클래스 안에 예제 코드를 작성했습니다. 코드의 내용은 다음과 같습니다.
- @SpringBootApplication : 스프링 부트의 자동 설정, 스프링 Bean 읽기와 생성을 모두 자동으로 설정되게 도와주는 키워드, 항상 프로젝트의 최상단에 위치.
- SpringApplcation.run() : 내장 WAS(Web Application Server)를 실행하는 함수, 서버에 Tomcat를 설치할 필요가 없고, 스프링 부트로 만들어진 Jar파일을 실행하면 된다.
다음으로는 간단한 API 생성하겠습니다.
코드의 내용은 다음과 같습니다.- @RestController : 컨트롤러를 JSON을 변환하는 컨트롤러로 만들어준다.
- @GetMapping : HTTP Method인 Get의 요청을 받을 수 있는 API를 만들어준다.
- @RunWith(SpringRunner.class) : 테스트를 진행할 때 JUnit에 내장된 실행자 외에 다른 실행자를 실행시켜야합니다. 여기서는 SpringRunner라는 스프링 실행자를 사용합니다. 즉,스프링 부트 테스트와 JUnit 사이에 연결자 역할을 합니다.
- @WebMvcTest : 여러 스프링 테스트 어노테이션중, Web에 집중할 수 있는 어노테이션입니다.
- @Autowired 스프링이 관리하는 빈을 주입 받습니다. (빈 = 자바가 관리하는 클래스)
- private MockMvc mvc
- 웹 API를 테스트할 때 사용한다.
- 테스트의 시작점이다.
- 이 클래스를 통해 HTTP GET, POST등에 대한 API 테스트를 할 수 있다.
- .andExpect() mvc.perform의 결과를 검증한다.
롬복(Lombok)이란 자바 개발자들의 필수 라이브러리이자, Getter, Setter, 기본생성자,toString 등을 어노테이션으로 자동 생성해줍니다. "build.gradle" 파일에서 다음의 코드를 추가합니다.
dependenccies{ complie('org.projectlombok:lombok') }+ Gradle 5.x 버전 이하에서는 책과 동일,
Gradle 5.x 버전 이상에서는 다음과 같이 설정해야한다.
dependencies { compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' }그 후 "HelloResponseDto" 파일을 생성. 코드의 내용은 다음과 같다.
- @Getter - 선언된 모든 필드의 변수들에 대한 get메소드를 생성해준다.
- @RequiredArgsController - final로 선언된 모든 필드가 포함된 생성자를 생성해준다.