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 사용