CHAP 10. 테스트 코드와 유지보수
테스트 주도 개발 시작하기 10장을 요약한 내용입니다.
테스트 코드와 유지보수
변수나 필드를 사용해서 기댓값 표현하지 않기
// 안좋은 사례
@Test
void dateFormat() {
LocalDate date = LocalDate.of(1945,8,15);
String dateStr = formatDate(date);
assertEquals(date.getYear() + "년 " +
date.getMonthValue() + "월 " +
date.getDayOfMonth() + "일 ", dateStr);
// 개선된 사례
@Test
void dateFormat() {
LocalDate date = LocalDate.of(1945,8,15);
String dateStr = formatDate(date);
assertEquals("1945년 8월 15일", dateStr);
// 안좋은 사례
@Test
void checkArray() {
assertAll(
() -> assertEquals(answers.get(0), resultedAnswers.get(0)),
() -> assertEquals(answers.get(1), resultedAnswers.get(1)),
() -> assertEquals(answers.get(2), resultedAnswers.get(2))
)
}
// 개선된 사례
@Test
void checkArray() {
assertAll(
() -> assertEquals(1, resultedAnswers.get(0)),
() -> assertEquals(2, resultedAnswers.get(1)),
() -> assertEquals(3, resultedAnswers.get(2))
)
}두 개 이상을 검증하지 않기
정확하게 일치하는 값으로 모의 객체 설정하지 않기
과도하게 구현 검증하지 않기
셋업을 이용해서 중복된 상황을 설정하지 않기
통합 테스트의 상황 설정을 위한 보조 클래스 사용하기
실행 환경이 다르다고 실패하지 않기
실행 시점이 다르다고 실패하지 않기
랜덤하게 실패하지 않기
단위 테스트를 위한 객체 생성 보조 클래스
조건부로 검증하지 않기
통합 테스트는 필요하지 않은 범위까지 연동하지 않기
더 이상 쓸모 없는 테스트 코드
Last updated