on
TIL : JUnit - 테스트 순서, Properties
TIL : JUnit - 테스트 순서, Properties
12/17 JUnit
테스트 인스턴스
** 테스트 클래스의 메소드마다 새로 인스턴스를 생성한다 - 메소드간의 연관성을 없애기 위해!
@TestInstance(Lifecycle.PER_CLASS) 테스트 클래스당 인스턴스를 하나만 만들어 사용한다. 경우에 따라, 테스트 간에 공유하는 모든 상태를 @BeforeEach or @AfterEach에서 초기화 할 필요가 있다. 기존에 Static으로만 가능했던 @BeforeAll 이나 @AfterAll을 인스턴스 메소드 또는 인터페이스에 정의한 default 메소드로 정의할 수도 있다
테스트 순서
실행할 테스트 메소드 특정한 순서에 의해 실행되지만 어떻게 그 순서를 정하는지는 의도적으로 분명히 하지 않는다 - 테스트 인스턴스를 테스트 마다 새로 만드는 것과 같은 이유 ( 정확하고 독립적인 테스트를 위해서! )
) 경우에 따라, 특정 순서대로 테스트를 실행하고 싶을 때도 있다. 그 경우에는 테스트 메소드를 원하는 순서에 따라 실행하도록 @TestInstance(Lifecycle.PER_CLASS)와 함께 @TestMethodOrder를 사용할 수 있다. MethodOrderer 구현체를 사용한다 기본 구현체 Althanumeric OrderAnnotation Random
junit-plaform.properties
JUnit 설정 파일로, 클래스패스 루트 (src/test/resources/)에 넣어두면 적용된다
테스트 인스턴스 라이프 사이클 설정
junit.jupiter.testinstance.lifecycle.default = per_class
확장팩 자동 감지 기능
junit.jupiter.extensions.autodetection.enabled = true
Disabled 무시하고 실행하기
junit.jupiter.conditions.deactivate = org.junit.*DisabledCondition
테스트 이름 표기 전략 설정org.junit.jupiter.api.DisplayNameGenerator$ReplaceUnderscores
junit.jupiter.displayname.generator.default = \
확장모델
JUnit4의 확장 모델은 @RunWith(Runner), TestRule, MethodRule.
JUnit5의 확장 모델은 단 하나, Extension
확장팩 등록 방법
선언적 등록 @ExtendWith
프로그래밍 등록 @RegisterExtension
생성자가 사용 가능하므로 테스트마다 값을 다르게 사용할 수 있다
자동 등록 자바 ServiceLoader 이용 - 권장되지 않음
확장팩 만드는 방법
테스트 실행 조건
테스트 이스턴스 팩토리
테스트 인스턴스 후 처리기
테스트 매개변수 리졸버
테스트 라이프 사이클 콜백
예외처리
...
FindSlowTestExtension.java
from http://jacksonhong.tistory.com/55 by ccl(A) rewrite - 2021-12-17 09:02:03