본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.




패스트캠퍼스의 '9개 도메인 프로젝트로 끝내는 백엔드 웹 개발 (Java/Spring) 초격차 패키지 Online' 강의 수강 8일차!
오늘은 커뮤니티 피드 서비스의 게시글 및 댓글 도메인 객체에 대한 테스트 코드를 작성하는 실습을 진행하였다.
테스트 코드를 구현하다 보면 어쩔 수 없이 비슷한 구조로 반복되는 코드를 작성하게 되는데, 이때 Github의 'copilot' 이라는 기능을 사용하면 편리하다.
코파일럿은 코드 자동 완성 기능을 제공하는 AI 기반의 프로그램인데, 강사님이 사용하시는 걸 보니 확실히 반복 작업에 있어서 굉장히 장점을 가지고 있는 것 같았다. (하지만... 나는 따로 코파일럿을 구독하고 있지 않기 때문에 그냥 내가 직접 테스트 코드를 작성했다..ㅎㅎ)
테스트에 유용하게 사용되는 어노테이션들을 새로 알게 되었다.
@ParameterizedTest
@ValueSource(strings = {"뷁", "닭", "굵"})
void givenContentLengthIsOverAndKorean_whenCreate_thenThrowException(String koreanContent) {
// given
String content = koreanContent.repeat(101);
// when, then
assertThrows(IllegalArgumentException.class, () -> new CommentContent(content));
}
@ParameterizedTest 는 여러 개의 테스트를 한 번에 작성할 수 있도록 해준다.
위 코드의 경우 같은 조건(101자가 넘는 한글 단어)인 케이스에 대해 테스트 하였지만, then만 같다면 여러 케이스도 한번에 테스트가 가능하다.
같이 사용된 @ValueSource 는 테스트에 주입할 값을 어노테이션에 배열으로 지정하는 기능을 한다.
테스트를 실행하면 배열을 순회하면서 테스트 메소드에 주입시킨다.
만약 Null 또는 Empty인 경우를 테스트하고 싶다면, @ValueSource 대신 @NullAndEmptySource 어노테이션을 사용하면 된다.
처음에는 테스트 코드 작성하는 것에 대한 감이 없어서 강의를 보며 따라 치기만 했는데, 이번에는 강의를 보기 전에 혼자 구현을 해보았다.
잘 하고 있는 건가? 의문이 들었지만 강의를 보니 강사님의 코드와 크게 차이가 없어서 내심 뿌듯했다.