작성한 함수가 정상적으로 작동하는지 확인하기 위해 설계하는 코드
📌 TDD : 함수를 구현하기 이전에 함수에서 발생할 수 있는 예외 시나리오를 모두 생각한 뒤에 이를 바탕으로 코드 설계하는 개발 방법
테스트 함수를 먼저 구현한 뒤에 기능을 구현하면 속도는 느려질 수 밖에 없지만, 프로그램의 오류를 미리 고려하고 구현하기 때문에 안정성을 높일 수 있다.
테스트 종류
기능
또는 메소드
== 유닛 테스트
특징
좋은 테스트란?? (FIRST)
Fast: 테스트는 빠르게 동작하여 자주 돌릴 수 있어야 함
Independent: 각각의 테스트는 독립적이며 서로 의존해서는 안됨
Repeatable: 어느 환경에서도 반복 가능해야 함
Self-Validating: 테스트는 성공 또는 실패로 bool 값으로 결과를 내어 자체적으로 검증되어야 함
Timely: 테스트는 적시에 즉, 테스트하려는 실제 코드를 구현하기 직전에 구현해야 함
📌 given-when-then 패턴
자바에서는 JUnit5
와 AssertJ
를 함께 이용해서 테스트를 진행한다.
테스트 인스턴스 라이프사이클
@BeforeAll
: 클래스 맨 처음에 실행@AfterAll
: 클래스 맨 끝에 실행@BeforeEach
: 테스트 하나 시작할 때마다 실행@AfterEach
: 테스트 하나 끝날 때마다 실행