JUnit-Rule
Rule은 하나의 테스트 클래스 내에서 동작 방식을 재정의 하거나 추가하기 위해 사용됩니다. 특히 다른 테스트클래스에서도 재사용성할 때 유용합니다.
기본 Rule 클래스
규칙이름 |
설명 |
TemporaryFolder |
임시폴더 관리. 테스트 후 삭제 |
ExternalResources |
자원(DB, 파일, 소켓) 관리 |
ErrorCollector |
지속적 테스트 실패 수집 |
Verifier |
별개 조건 확인 (vs assert* ) |
TestWatcher |
테스트 인터셉터 (starting, succeeded, failed, finished…) |
TestName |
테스트 메소드명을 알려줌 |
Timeout |
테스트 클래스 전역 timeout 설정 (vs @Timeout ) |
ExpectedException |
예외 직접 확인 (vs @Expected ) |
DisableOnDebug |
Rule 디버그 비활성화 데코레이터 |
RuleChain |
복수 Rule chaining 복합체 |
ClassRule |
테스트슈트 전체에 Rule 적용 |
상속구조
TemporaryFolder
ExternalResources
외부 자원(파일, 소켓, DB커넥션 등) 관리. @Before
, @After
과 별 차이가 없으나, 특정 자원이 다른 테스트케이스에서 재사용성이 요구될 경우 유용함
ErrorCollector
오류를 계속 쌓아둘 수 있으며, 오류가 발생해도 테스트를 계속 진행시킬 수 있을 때 유용하다.
checkThat
checkSucceeds
addError
Verifier
테스트 자체를 검증하는 assert*
메소드와는 달리, 일반적으로 테스트케이스 실행 후 만족해야하는 환경조건이나 Global조건(객체들의 종합 상태)을 검사하는데 쓰인다.
TestWatcher
apply
succeeded
failed
skipped
starting
finished
TestName
그냥 테스트 이름 호출할 뿐
Timeout
테스트 클래스 전역 timeout 설정
ExpectedException
@Expected
는 단순하게 클래스 타입만 검증하면 메세지도 검증가능하며, 확장하면 코드성 Exception 검증도 가능
DisableOnDebug
-Xdebug
또는 -agentlib:jdwp
옵션 시 비활성화
RuleChain
말 그대로 Rule chaining
ClassRule
참고로 커스텀 룰 구현도 가능합니다.
https://github.com/junit-team/junit4/wiki/Rules#custom-rules
참조