[스프링 데이터 JPA 편] - 테스트를 위한 JUnit5에서 의존성 주입은 꼭 @Autowired로 해야 하는 이유

2023. 3. 1. 19:15·Spring/스프링 부트와 JPA 실무 완전 정복 로드맵

스프링에서 의존성을 주입받는 방법은 크게 4가지가 있다.

 

1. 생성자를 통해서 의존성을 주입

     -> 특히 롬복(Lombok)의 @RequiredArgsConstructor를 사용해서

          final 타입의 필드를 주입받는 것이 널리 사용된다.

 

2. 필드에서 @Autowired로 직접 주입

 

3. setter 메서드를 만들어서 의존성을 주입

 

4. 기타 특정한 메서드를 만들어서 의존성을 주입

 

특히 build.gradle에 아래와 같이 dependencies를 추가하면

테스트 클래스에서도 롬복을 사용할 수 있어서 자주 사용하곤 한다.

// 테스트에서 lombok 사용
testCompileOnly 'org.projectlombok:lombok'
testAnnotationProcessor 'org.projectlombok:lombok'

 


위와 같이 테스트 클래스에서 EntityManager를 롬복을 사용해서 생성자 주입을 하면 어떻게 될까?

 

이렇게 JUnit이 ParameterResolver를 찾지 못했다고 에러를 발생시킨다.

 

결론부터 이야기 하자면

JUnit5의 경우 빈 주입은 @Autowired 어노테이션을 사용해서 필드에서 해야 한다.

 

프로덕트 환경, 테스트 환경은 각각 관리하고 있는 프레임워크의 주체가 다르다.

JUnit5에서는 Jupiter가 주체이기 때문에, @Autowired로 명시해야

Jupiter가 의존성 주입을 스프링 컨테이너에게 요청하게 되어서, 정상적으로 의존성을 주입받을 수 있게 된다.

 

'Spring > 스프링 부트와 JPA 실무 완전 정복 로드맵' 카테고리의 다른 글

[JPA 기본편] - JPA 프로젝트 세팅하기 (JDK 11, Gradle, 스프링 부트 없이)  (0) 2023.02.05
'Spring/스프링 부트와 JPA 실무 완전 정복 로드맵' 카테고리의 다른 글
  • [JPA 기본편] - JPA 프로젝트 세팅하기 (JDK 11, Gradle, 스프링 부트 없이)
달거달거
달거달거
개발자를 꿈꿉니다
  • 달거달거
    SWEE IT
    달거달거
  • 전체
    오늘
    어제
    • 분류 전체보기 (288)
      • 개발 환경 (5)
        • VSCode (1)
        • 파이썬 (Anaconda) (1)
        • Git (1)
        • Flutter (0)
        • Kotlin (1)
      • Spring (5)
        • 스프링 부트와 JPA 실무 완전 정복 로드맵 (2)
        • 스프링 부트와 AWS로 구현하는 웹 서비스 (1)
        • 채쌤의 스프링 부트 프로젝트 (1)
      • 알고리즘과 코딩 테스트 (16)
        • 파이썬 문법 (2)
        • 백준 25단계 (10)
        • 프로그래머스 코딩 테스트 고득점 Kit (1)
        • 코틀린 문법 (1)
      • 요리 (236)
      • 데이터베이스 (2)
        • MySQL (2)
      • 안드로이드 (11)
        • 연습 코드 (6)
        • 도서 내용 정리 (4)
      • Dart와 Flutter (5)
        • 도서 내용 정리 (4)
        • Flutter 위젯 정리 (1)
        • 15개 프로젝트 (2)
      • 피그마 (0)
        • 도서 내용 정리 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    자취요리
    git
    docker
    vscode
    spring
    c++
    티스토리챌린지
    코딩 테스트
    DART
    node.js
    데이터베이스
    주석
    mysql
    안드로이드
    피그마
    아나콘다
    문법
    C
    백준
    파이썬
    JPA
    오블완
    알고리즘
    코틀린
    AWS
    프로그래머스
    머신러닝
    Flutter
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
달거달거
[스프링 데이터 JPA 편] - 테스트를 위한 JUnit5에서 의존성 주입은 꼭 @Autowired로 해야 하는 이유
상단으로

티스토리툴바