티스토리 뷰

Programming Language/Java

JAVA TEST

tongnamuu 2021. 6. 30. 02:30
assertThatThrownBy(() -> "abc".charAt(3)).isInstanceOf(IndexOutOfBoundsException.class);
assertThatExceptionOfType(IndexOutOfBoundsException.class).isThrownBy(() -> "abcd".charAt(5));

자바로 어떤 함수를 작성하고 테스트를 해야 하는 경우가 있다.

간단히 예시를 들고 왔다. 이미 있는 함수로 간단히 테스트코드 작성하는 법을 알아보자.

String의 split이 어떻게 동작하는가를 테스트한다. assertThat 이후 특정 값이라면 isEqualTo,

배열이 리턴된다면 contains 를 쓸 수도 있지만 containsExactly 를 통해 모든 배열값이 순서대로 나왔는지도 체크할 수 있다.

만약를 아래에 추가하게 된다면 테스트 는 실패하게 될 것이다.

assertThat(actual).containsExactly("2", "1");

만약 다른 함수 테스트를 작성해야 한다면

@Test
void substringTest() {
    String actual = "(1,2)".substring(1, 4);
    assertThat(actual).isEqualTo("1,2");
}

@Test annotation을 붙인 테스트 함수를 작성해주면 된다.

 

그리고 Exception에 관한 테스트를 할 수도 있다.

크게 두 가지 방식으로 쓸 수 있다.

assertThatThrownBy(() -> "abc".charAt(3)).isInstanceOf(IndexOutOfBoundsException.class);
assertThatExceptionOfType(IndexOutOfBoundsException.class).isThrownBy(() -> "abcd".charAt(5));

그리고 어떤 테스트가 실패했을 때를 살펴보자.

assertThatThrownBy(() -> "abc".charAt(2)).isInstanceOf(IndexOutOfBoundsException.class);

로 변경해주면 Exception이 발생하지 않고 테스트가 실패한다.

이 때 test 함수 이름이 나오는 것을 볼 수 있다.

이 때 @DisplayName Annotation을 붙여서 아래처럼 코드를 돌리게 되면

 

DisplayName에서 지정해준 String이 출력되서 어떤 함수의 테스트인지 더 전달하기 쉽게 된다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/08   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함