개인 메모용 게시글 입니다
public static final String PLAYLIST_0_TITLE = "플레이리스트 제목0";
public static final String PLAYLIST_0_IMAGE_URL = "https://test0.com";
// ..
PlaylistUpload playlistUpload0 = PlaylistUpload.builder()
.title(PLAYLIST_0_TITLE)
.playlistImageUrl(PLAYLIST_0_IMAGE_URL)
.build();
테스트 하는 메소드의 대한 테스트를 모아놓은 @Nested
클래스 만들고 그 클래스 안에 여러가지의 테스트 메소드 작성
ex) getPlaylists()
메소드에 대한 테스트
@Nested
class GetPlaylistsTests {
@Test
void 플레이리스트_목록_가져오기_성공() {
// given
// when
// then
}
@Test
void 플레이리스트_목록_가져오기_페이지네이션() {
// given
// when
// then
}
@Test
void 탈퇴한_멤버의_트랙이_포함된_플레이리스트_조회() {
// given
// when
// then
}
}
어떤 상황에서도 통과하도록 테스트 작성
ex) 통합 테스트시 DB에 데이터가 이미 있든 없든 통과하도록
사용되는 범위에만 변수 선언
한 테스트 메소드에서는 한가지 개념만 테스트
ex)
1. 플레이리스트_목록_가져오기_성공
2. 플레이리스트_목록_가져오기_없음
3. 플레이리스트_목록_가져오기_페이지네이션
4. 탈퇴한_멤버의_트랙이_포함된_플레이리스트_조회
5. 삭제한_트랙이_포함된_플레이리스트_조회
테스트용 임시 데이터 @BeforeEach
로 만들때, 테스트가 작성되어있는 다른 서비스 메소드에 어느정도 의존해도 괜찮다.
ex) 생성하는 서비스 메소드 호출
DB 연동된 통합 테스트 시, 영속성 컨텍스트에 관해 잘 생각해야 한다.
결국 핵심은 나중에 보고 수정하거나 뭘 추가하기 쉽게 하기 위함이다.