⚡ 생각대로 살지 않으면 사는대로 생각한다.
⚡ 나는 어차피 잘 될 놈이다. 이미 잘 되고 있고, 계속해서 잘 되고 있다.
💡참고
- JUnit 4에서 쓰던 것을 JUnit 5에선 사용하지 못한다.
- 고로 사용하고 있던게 있다면 JUnit 5용으로 새로 만들어야 한다.
확장팩을 등록하는 방법은 크게 3가지.
- 선언적인 등록 @ExtendWith
- 프로그래밍 등록 @RegisterExtension
- 자동 등록 자바 ServiceLoader 이용
이 외에도 확장팩에 대한 내용이 레퍼런스에 무척 많다.
선언적인 등록방식
@ExtendWith(*.class)
@ExtendWith 애너테이션으로 선언방식을 이용하게 되면, 테스트 수행시, 애너테이션에 지정한 클래스에서 작성한 로직에 의해서 테스트의 특정한 조건이 만족했을 때, 사용자에게 그 특정한 조건이 성립되었다고 알리게 할 수 있다.
프로그래밍적 등록방식
❗선언적인 등록방식보다는 프로그래밍적인 방법으로 등록을 하는 경우가 더 많은데,
프로그래밍적인 방법으로 등록하는 이유는 선언적인 방식으로 인스턴스를 애너테이션에 등록하면 인스턴스를 커스터마이징을 할 수 없다.
🙄어떤 의미냐?
인스턴스의 필드 값을 바꿔야 할 때, 선언 등록 방식으로는 바꾸질 못한다.❗❗❗
✅@ExtendWith()으로 클래스를 지정해주면,기본 생성자로만
인스턴스를 생성하는데, 그기본 생성자로 생성된 인스턴스만
사용되기 때문이다.
✅혹여 기본생성자를 사용해서 인스턴스가 생성이 되지 못 하는 경우엔, 테스트를 실행하면 인스턴스를 생성하지 못한다는 메세지가 나온다. (아래 사진 참고.)
확장팩 자동 감지 기능
- 자동 등록 자바 ServiceLoader 이용
- Extension을 의존성으로 주입받고, 클래스 로더시에 자동으로 등록하게 하는 방법이 있는데, 해당방법은 기본적으로 실행이 안 되도록 되어있다.
- 되게 하려면,
junit.jupiter.extensions.autodetection.enabled = true
이 값을 를 테스트 설정 파일에 등록해주면 된다.- 자세한 건 레퍼런스의 Automatic Extension Registration 부분을 참조하면 된다.