하나의 Controller 객체에는 같은 관심사를 가진 복수의 API 가 존재하는데,
이런 API 하나하나 마다 성공, 실패, 실패할경우 어떤이유로 실패 했는지 등등 ..
최소 2개 이상의 검증이 필요하다.
또한 Test 는 코드보다 Test 의 실행 결과를 더 자주 확인하기 때문에 하나의 Test 객체에 모든 API 검증 로직을 전부 작성할경우 가독성이 매우 떨어진다고 생각했다.
Nested 를 사용하기 전에는 막연하게 Test 객체를 나눴다.
예를 들어 Member Controller 에 대한 검증이라면,
member/controller 패키지 내에 CreateTest, ModifyTest 등등.. Test 객체를 각각 나눠 관리했는데,
아래와 같은 문제들이 발생했다.
@DisplayName("통합: 인증 API")
// ...
class AuthControllerTest extends KakaoClientMock{
// ...
@DisplayName("kakao api 인증")
@Nested
class kakaoLogin {
@DisplayName("회원가입 성공")
@Test
void no1() throws Exception { ... }
@DisplayName("로그인 성공")
@Test
void no2() throws Exception { ... }
}
@DisplayName("토큰 재발급")
@Nested
class reissueToken { ... }
@DisplayName("logout")
@Nested
class logout { ... }