상세 컨텐츠

본문 제목

TIL : JUnit - 테스트 순서, Properties

Programming/TIL

by 홍잭슨 2021. 12. 17. 08:58

본문

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

'Programming > TIL' 카테고리의 다른 글

TIL : Mockito  (0) 2021.12.21
TIL : JUnit, Mockito  (0) 2021.12.20
TIL : JUnit  (0) 2021.12.15
TIL: JUnit  (0) 2021.12.14
TIL: Anotation Processor  (0) 2021.12.13

관련글 더보기