본문 바로가기
Java

Junit5

by 모스키토끼 2020. 11. 16.

Junit5

가장 최근에 개발된 Junit 테스트 프레임워크, 풍부한 어노테이션을 제공하여 쉽고 간결하게 테스트 코드를 작성 및 실행할 수 있다.

Java 8에 기반 (Junit4는 Java 5 기반)

아키텍처

→ 테스트를 발견하고 테스트 계획을 생성하는 TestEngine 인터페이스를 정의.

→ Platform은 TestEngine을 통해서 테스트를 발견하고, 실행하고, 결과를 보고

테스트 코드

→ 테스트 메서드는 3A로 구성되어있다. (3A: Arrange, Act, Assert)

  • @DispalyName: 메서드 설명을 넣을 때 사용 (테스트 시에 깔끔하게 볼 수 있음)

  • Error: Assert문 이전에 문제가 발생

  • Failure: Assert문에서 기댓값과 결괏값이 다른 경우 발생

참고) AssertEquals에서 기대값에 Exception이 들어갈 수 없으므로 Assertion.assertThrows()로 예외인 경우를 처리한다.

Parameterized Test

동일한 기능을 다양한 값을 사용하여 테스트 가능!

@Test 어노테이션 대신 @ParameterizedTest 어노테이션 이용

종류

  • Method Source
  • CSV Source
  • Value Source
  • Enum Source

✔️ @MethodSource

@MethodSource("메서드 이름") → 해당 메서드를 가지고 동일한 기능을 테스트한다.

MethodSource 인자로 들어갈 메서드를 정의할 때는 Static 메서드로 정의한다.

❗ 위 테스트는 이름을 보기가 힘들다. → ParameterizedTest에서 테스트 이름 설정 가능

ex) @ParameterizedTest(name="중간 점수 {1}, 기말 점수 {2}, 과제 {3}에 대해 {0} 학점이 계산되어야 한다")

  • {i}: 인자 위치
  • {arguments}: 인자 전체

✔️ @CSVSource

✔️ @ValueSource

✔️ @EnumSOurce

참고) Exception Test

@BeforeEach/@BeforeAll , @AfterEach/@AfterAll

프로세스

예시

@Tag를 붙인 메서드는 따로 모아 볼 수도 있고 따로 실행도 가능하다.(따로 실행 - build 할 때 실행할 태그를 설정하고 실행)

※ 본 글은 정인상 교수님의 테스트 강의자료를 기반으로 작성했습니다.

'Java' 카테고리의 다른 글

함수형 인터페이스 활용  (0) 2020.11.16
Mockito  (0) 2020.11.16
함수형 인터페이스 모음  (0) 2020.10.08

댓글