학습 테스트를 익힙시다.
목적
학습 테스트는 무엇일까요?
- 기능 구현을 위한 것 보다는 새로운 API, 라이브러리, 프레임워크가 어떻게 동작하는지를 검증하기 위한 테스트를 말합니다.
- 손쉽게 다양한 조건에 따른 기능 동작을 확인할 수 있게 되겠죠?
- 예시
요구사항 1
- "1, 2"을
, 로 split 했을 때 1과 2로 잘 분리되는지 확인하는 학습 테스트를 구현합니다.
- "1"을
, 로 split 했을 때 1만을 포함하는 배열이 반환되는지에 대한 학습 테스트를 구현합니다.
요구사항 2
- "(1,2)" 값이 주어졌을 때 String의
substring() 메소드를 활용해 ()을 제거하고 "1,2"를 반환하도록 구현합니다.
요구사항 3
- "abc"값이 주어졌을 때 String의 charAt() 메소드를 활용해 특정 위치의 문자를 가져오는 학습 테스트를 구현합니다.
- String의 charAt() 메소드를 활용해 특정 위치의 문자를 가져올 때 위치 값을 벗어나면 StringIndexOutOfBoundsException이 발생하는 부분에 대한 학습 테스트를 구현합니다.
- JUnit의 @DisplayName을 활용해 테스트 메소드의 의도를 드러냅니다.
힌트
import static org.assertj.core.api.Assertions.*;
assertThatThrownBy(() -> {
// ...
}).isInstanceOf(IndexOutOfBoundsException.class)
.hasMessageContaining("Index: 2, Size: 2");