Test 코드

yshjft·2022년 11월 22일
0

Spring, JPA

목록 보기
6/16

테스트 코드에서 @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
      • Junit5에서 등장
      • 사용자 정의 이름 표시
profile
꾸준히 나아가자 🐢

0개의 댓글