반응형
이 포스팅에서 작성하는 내용은 더 자바, 애플리케이션을 테스트하는 다양한 방법 에서 발췌하였습니다.
https://inf.run/CpvH
Test Instance
하나의 클래스에서 여러 개의 @Test 가 있는 경우, 실제로 하나의 클래스 안에서 모든 @Test가 작동하는 것이 아니라 각기 다른 테스트 인스턴스에서 진행된다.
why? 전역변수와 같이 공유하는 자원에서 어느 테스트가 먼저 실행되냐에 따라 결과가 달라지면 안되기 때문
@TestInstance(Lifecycle.PER_CLASS)
- 하나의 클래스에서 여러 TestInstance를 만들지 않고, 하나의 TestInstance 내에서 진행하도록 하는 어노테이션
- 즉, 전역변수와 같은 공유 자원들을 각 @Test가 공유한다.
Test Order
기본적인 테스트 순서의 경우, Junit 내부 엔진에 의해 언제든 바뀔 수 있으니 현재 테스트 순서를 맹신하면 안된다.
(단위테스트는 다른 테스트와 의존적이지 않게 순서에 상관없이 설계되어야 하므로)
* 테스트 순서를 설정하는 방법
클래스에 @TestMethodOrder을 넣고, 각 메서드에 @Order로 순서를 설정할 수 있다. (@TestInstance 없어도 가능)
- @TestMethodOrder(MethodOrderer.OrderAnnotation.class) : @Order로 명시된 순서대로 테스트를 진행하겠다.
- @Order : Spring에 있는 어노테이션이 아닌, junit에 있는 어노테이션으로 import 해야 한다.
(숫자가 낮을수록 높은 우선순위)
코드 | 실행결과 |
junit 전역 설정 방법
- .properties 파일을 이용해 전역 설정을 할 수 있다.
- src/test/java/resources에 junit-platform.properties 파일을 추가하고 해당 프로퍼티 파일 내에 설정할 수 있다.
해당 properties 파일이 인식되지 않는 경우(Spring)
필자는 아래처럼, Project 설정 - Java Build Path - Source에 경로를 추가하였더니 적용됐다.
반응형
'BE > Java' 카테고리의 다른 글
[Java] Enum to String & String to Enum (0) | 2023.03.09 |
---|---|
[Junit 5] 확장 모델 (0) | 2023.02.15 |
[Junit 5] Tag, 테스트 반복 (0) | 2023.02.13 |
[Junit 5] 테스트 이름 설정, Assertion (0) | 2023.02.09 |
[Junit 5] Junit5 들어가기 (0) | 2023.02.07 |