- Given-When-Then으로 테스트 구조화
- 테스트 코드작성시 새줄, 주석을 통한 구분하여 코드의 가독성을 높이자.
- Given(~주어졌을때)
- When(~경우)
- Then(~결과)
- 의미 있는 어서션 사용하기
- assert 불표현식을 사용시 동등연산자(==) 등을 사용시 AssertionError 에러가 발생한다.
- 이때 어떤 어서션이 실패했는지만 알뿐 왜 실패 했는지는 모른다.
- 더 나은 메시지를 얻으려면 검증하려는 테스트에 가장 적합한 어션을 선택 하자.
- 실제 값보다 기대 값을 먼저 보이기
- assertEquals(기대값, 실제값)사용하기
- 합당한 허용값 사용하기
- 예외 처리는 JUnit에 맡기기
- assertThrows 어서션을 사용하여 예상되는 예외를 발생시키자.
- 테스트 설명하기
- 메서드명 불필요한 용어 삭제
- @DisplayName을 사용하여 테스트 설명 추가
- 독립형 테스트 사용하기
- @BeforeEach, @BeforeAll 사용시 클래스의 맨위부터 읽어야 하며, 매 단일 테스트 메서드마다 설정 메서드의 역할을 다시 떠올려야한다.
- static 메서드로 정의하여 각 단일 테스트마다 사용시 테스트를 독립적으로 사용가능하다.
- 어떤 테스트를 한 테스트 클래스에서 다른 테스트 클래스로 옮기기도 쉽다.
- 테스트 매개변수화
- 하나의 테스트 내에서 매개변수별로 테스트를 사용시, 첫번째 매게변수의 실패로, 뒤의 매개변수의 결과값은 표시되지 않는다.
- @ParameterizedTest와 @ValueSource를 사용하여 테스트를 매개변수화가능하다.
- 실행시 JUnit은 각매개변수마다 별개의 테스트를 실행한다.
- 경계 케이스 다루기
테스트 코드의 중요성은 잘 알고 있지만, 어떻게 해야하는지를 잘 몰랐다. 더 깊은공부의 필요성을 느낌.