더북(TheBook)

3.1.5 단언 설명

모든 JUnit 단언의 형식(전통적5 fail(), 햄크레스트 assertThat())에는 message라는 선택적 첫 번째 인자가 있습니다. message 인자는 단언의 근거를 설명해 줍니다.

iloveyouboss_13/test/scratch/AssertTest.java

@Test
public void testWithWorthlessAssertionComment() {
    account.deposit(50);
    assertThat("account balance is 100", account.getBalance(), 
               equalTo(50));
}

 

이 설명문은 심지어 테스트를 정확하게 설명하지도 않습니다. 오히려 거짓말에 가깝습니다. 주석의 기대 잔고는 (100)이지만 실제 코드의 기댓값은 (50)입니다. 구현 세부 사항을 설명하는 주석은 코드와 일치하지 않는 것으로 악명이 높습니다.

설명이 있는 주석문을 선호한다면 단언에 메시지를 추가할 수 있습니다. 하지만 더 좋은 방법은 테스트를 코드 자체만으로 이해할 수 있게 작성하는 것입니다. 테스트 이름을 변경하거나, 의미 있는 상수를 도입하거나, 변수 이름을 개선하거나, 복잡한 초기화 작업을 의미 있는 이름을 가진 도우미 메서드로 추출하거나, 가독성이 우수한 햄크레스트 단언을 사용하는 등의 방법을 활용하는 것이 테스트를 훨씬 좋게 만듭니다. 테스트 정리 내용은 11장에서 다룹니다.

단언 메시지는 테스트가 실패할 경우 유용한 정보를 좀 더 빠르게 알려 줍니다. 하지만 좀 더 군더더기 없는 코드를 만드는 것과 상충(trade-off) 관계이기도 합니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.