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 |
댓글