테스트 코드를 작성하는 법은 딱히 정해지지 않았다.
어떤 기준을 잡고 테스트 하느냐에 따라 일의 효율과 의미가 달라질 것이라 생각된다.
때문에 효율적인 테스트 코드를 작성하는 기준을 정해보려 한다.
본 게시글은 여기어때 테크 블로그를 참고하여 작성하였습니다.
https://techblog.gccompany.co.kr/즉시할인쿠폰이-테스트를-작성하는-방법-cb70b1ae74f7
🥑 가치 있는 테스트 코드를 작성해라 !
여기어때 즉시할인쿠폰 팀은 가치있는 테스트 코드를 작성하기 위해서 다음과 같은 기준을 잡았다.
- 팩토리 메소드(객체를 생성 반환하는 메서드)는 테스트하지 않는다.
- 단순 DB 조회/저장/수정 메서드는 테스트하지 않는다. (필요한 경우에는 저장 메서드만 테스트)
- 빈의 유효성을 테스트하지 않는다.
- 하나의 테스트 실행구절은 하나의 기능만 테스트한다.
🥑 Spock 테스트 프레임워크를 사용해라 !
JUnit5, AssertJ 를 사용해 테스트 코드를 작성해도 되지만, Spock 테스트 프레임워크를 도입하면 간결하게 작성할 수 있다.
https://spockframework.org/spock/docs/2.2/index.html
Spock 프레임워크의 기능 중 여기어때 기술팀이 정의한 유용한 기능을 함께 소개하겠다.
- where 절 => 같은 타입이지만 매개변수만 다르게 값을 설정해야할 경우
- private 변수 접근 => setter 없이도 접근 가능
- given, when, then 등 테스트 명세 작성 가능
- 테스트 대역 오버라이딩 가능 (valid mock) 🧑🏻💻 학습 필요성 있다.