(1) 단위 테스트 꿀팁 : given - when - then 패턴
given
- 테스트를 위해 준비하는 과정
- 테스트에 사용하는 값을 정의한다.
when
- 테스트하고자 하는 기능을 실행시킨다.
then
- 기능을 실행한 후 결과를 검증한다.
예시
//given
int count = 10;
Car car = new Car();
//when (기능 작동)
car.move(count);
int distance = car.getPosition();
//then (기능 작동 후 검증)
assertThat(distance).isEqualTo(count);
(2) @ParameterizedTest
대략적인 예시
@ParameterizedTest 사용해서 여러 값을 테스트해보기!
사용하는 방법
@ParameterizedTest
@valueSource(ints = {1, 2, 3, 4, 등등})
@DisplayName() 등등
void functionName(int valueSource로 지정한 값 받아오기) {
나중에
assertThat(검증할 때 valueSource로 지정한 값 받아오기 사용하면된다.)
}
https://www.youtube.com/watch?v=EwI3E9Natcw
테스트 작성하면서 느꼈던 점
테스트 작성에 부족한 부분이 많아서
테크톡에서 테스트 관한 영상과 구글링 통해 테스트 작성에 내용들을 검색 후 정리하면서 익힌 뒤 test/java/study에 있는 예시 테스트들을 분석하면서 “아! 이렇게 하는 거구나”라는 감을 잡았습니다.
구현만 하고 테스트 진행하지 않았을 땐 매번 애플리케이션을 실행하면서 테스트를 했기에 번거로움과 테스트를 꼼꼼히 진행했는지에 관한 의문점이 많았습니다.
이를 테스트 작성을 통해 해결할 수 있었던 점 더불어 테스트 작성하면서 제 코드에 수정할 부분을 찾고 수정하면서 보다 제 코드가 신뢰할 수 있게 되는 걸 느낌으로서 테스트 작성에 대한 중요성을 몸소 깨닫는 시간이었습니다.
테스트 코드 관련 공통 피드백
테스트를 작성하는 이유에 대해 본인의 경험을 토대로 정리해본다
단지 기능을 점검하기 위한 목적으로 테스트를 작성하는 것은 아니다. 테스트를 작성하는 과정을 통해서 나의 코드에 대해 빠르게 피드백을 받을 수 있을 뿐만 아니라 학습 도구(학습테스트를 통해 JUnit 학습하기.pdf)로도 활용할 수 있다. 이런 경험을 통해 테스트에 대해 어떤 유용함을 느꼈는지 알아본다.
처음부터 큰 단위의 테스트를 만들지 않는다
테스트의 중요한 목적 중 하나는 내가 작성하는 코드에 대해 빠르게 피드백을 받는 것이다. 시작부터 큰 단위의 테스트를 만들게 된다면 작성한 코드에 대한 피드백을 받기까지 많은 시간이 걸린다. 그래서 문제를 작게 나누고, 그 중 핵심 기능에 가까운 부분부터 작게 테스트를 만들어 나간다.
큰 단위의 테스트
- 자동차경주를 시작해서 사용자가 이름, 진행 횟수를 입력하면, 게임을 진행한 후 그 결과를 알려준다.
작은 단위의 테스트
- 무작위 값이 4 이상이면 자동차가 전진한다.
- 무작위 값이 3 이하이면 자동차가 전진하지 않는다.