테스트 코드에서 @Autowired
- 정확히는 JUnit5로 작성된 단위 테스트 코드에서 생성자 주입을 사용할 수 없다고 말할 수 있다.
“No ParameterResolver registered for parameter”
- JUnit5를 이용하여 작성한 테스트 코드에서 생성자 주입을 사용하는 경우
- 생성자 매개 변수를 처리할 ParameterResolver를 찾지 못한 경우 발생
- 테스트 프레임워크(JUnit5)에서 주체는 Spring이 아니라 Jupiter다.
- 생성자 매개 변수의 관리를 Jupiter가 한다.
- @Autowired를 명시적으로 적어야 Jupiter가 Spring Container에 빈 주입을 요청할 수 있다.
- 참고
JUnit4 VS JUnit5
- 엔진 차이
- JUnit4 → vintage-engine
- JUnit5 → jupiter-engine
- 어노테이션의 차이
@Before (JUnit4)
→ @BeforeEach (JUnit5)
- 테스트 클래스에서 각 테스트 메서드 실행하기 전에 실행
@After (JUnit4)
→ @AfterEach (JUnit5)
- 테스트 클래스에서 각 테스트 메서드 실행한 후에 실행
@BeforeClass (JUnit4)
→ @BeforeAll (JUnit5)
- 테스트 클래스의 모든 테스트 메서드가 실행되기 전에 실행(한번만 실행)
@AfterClass (JUnit4)
→ @AfterAll (JUnit5)
- 테스트 클래스의 모든 테스트 메서드가 실행된 후에 실행(한번만 실행)
@Nested
- JUnit5에서 등장
- 테스트를 클래스로 묶을 수 있다.
- 관련있는 테스트를 묶어서 볼 수 있게 이는 가독성을 개선
- JUnit 4는
@RunWith
및 @Parameters
를 지원하는 반면 JUnit 5 Jupiter는 @ValueSource
와 함께 @ParameterizedTest
를 지원
@DisplayName