회원가입 API를 개발한 후 테스트 코드를 작성하기로 했다
UserDto에 @Validated 어노테이션을 붙여주었기에, 정상적으로 유효한 값만 작동을 하는지에 대한 테스트 코드를 작성하는 중이었다
가장 작은 단위부터 테스트하는 단위테스트의 정의를 토대로 여러 유효성 검증 테스트를 작성하던 도중, 다른 팀원분께서 각 코드마다 중복된 사용의 문제점에 대해서 우려를 나타내셨다
그리고 팀원분은 한번에 유효성 검사를 하는 메소드를 원하셨다
각각 유효성 검사를 하면서 어느 유효성 검사를 하는지 알 수 있는 코드 vs 한번에 유효성 검사를 하되 어느 유효성 검사를 하는지 잘 알지 못하는 코드
2가지 테스트 코드 작성방향의 절충안을 다른 팀원분께서 알려주셨다
그 방법은 바로 Parameterized Test
Parameterized Test란 여러 argument를 이용해 테스트를 여러번 돌릴 수 있는 기능으로써, 한번에 검사를 할 수 있는 기능이었다
또한 내가 원했던 방식인, 여러 argument를 통해 테스트를 여러번 진행하는 동안 결과 화면에 다음과 같이 어떤 테스트를 진행했는지 알 수 있었다
UserDto를 파라미터로 사용하기 위해 MethodSource를 활용하였고, 다음과 같은 코드를 통해 테스트 코드를 작성할 수 있었다
오늘도 새로운 어노테이션, 그리고 효율적으로 테스트 코드를 작성하는 법을 배웠다!
=> 기존에 작성한 코드는 이메일 null과 비밀번호 null이 한번에 있는 경우, 즉 validation 에러가 1개가 넘는 경우에는 적용하기 힘들다는 단점이 있어서 코드를 보완함
기대값이 true면 violations이 0개, 기대값이 false면 violations이 1개 이상으로 테스트 진행!
'Project > Snacks' 카테고리의 다른 글
[Snacks 개발 일기] #6 구글 로그인정보를 통해 JWT 토큰 발급하기 (0) | 2022.12.12 |
---|---|
[Snacks 개발 일기] #5 테스트코드 MockMvc에 JWT 필터 적용하기 (0) | 2022.12.08 |
[Snacks 개발 일기] #4 구글 로그인 적용하기 (0) | 2022.12.02 |
[Snacks 개발 일기] #3 filter에 Response값 지정하기 (0) | 2022.11.27 |
[Snacks 개발 일기] #2 ResponseEntity 적용하기 (0) | 2022.11.17 |