Posts JUnit
Post
Cancel

JUnit

JUnit


JUnit 기초

  • @BeforeAll: 시작 전 실행하는 코드(클래스마다 Generate 하는게 아니라면 static으로 해야함)
  • @AfterAll: 테스트 후 실행하는 코드(클래스마다 Generate 하는게 아니라면 static으로 해야함)
  • @BeforeEach: 각 @Test 실행 전 실행하는 코드
  • @AfterEach: 각 @Test 실행 후 실행하는 코드
  • @DisplayName: class에 DisplayNameGeneration을 통해 만들어진 이름으로 테스트 코드 이름 변경

Assertion

  • assertNotNull: null 여부를 판단
  • assertEquals(a, b, c): a와 b의 값이 판단, c에는 람다식이나 message가 옴
  • assertAll(a,b,c,…): 람다식을 매개변수로 가지며 모든 assert를 실행
  • assertTrue(a,b): a가 True 일때만 통과
  • assertTrows: exception이 올바른지를 판단
  • assertTimeout: 정해진 시간안에 함수 실행이 완료되어야 함
  • assertTimeoutPreemptively: 별도의 쓰레드에서 실행하기 때문에 ThreadLocal일 경우 문제가 발생할 수 있음(Spring Transaction)

조건에 따른 실행

  • @Enabled…, @Disabled… : 조건에 따라 test 실행
  • @Tag: Tag에 따라 실행할 Test를 선택 가능

Test Instance

  • @TestInstance(TestInstance.Lifecycle.PER_CLASS): 테스트 가 class마다 Lifecylce을 가짐
    • BeforeAll 과 AfterAll이 static 메서드일 필요가 없다.

Test 순서

  • @TestMethodOrder(MethodOrderer.OrderAnnotation.class): 클래스 Annotation
  • @Order(0): 테스트 Annotation

Test 반복

  • @ReapeatedTest: value 만큼 name에 따라 이름을 정해서 Test를 진행
  • @ParameterizedTest: name에 따라 Test 이름 결정(parameter 참조는 인덱스로)
  • @ValueSource: 배열의 각 요소에서 message로 받아서 출력
  • @EmptySource: 빈 소스를 마지막에 추가해서 @Test
  • @NullSource: Null 소스를 마지막에 추가해서 test

Converter

  • ConvertWith: Converter를 정의해서 type to type 변환을 시행

Extentions(확장모델)

  • 선언적인 등록: @Extentions
  • 프로그래밍 등록: @RegisterExtension
  • 자동 등록 자바 ServiceLoader 사용
This post is licensed under CC BY 4.0 by the author.