스프링 통합 테스트

inhalin·2022년 7월 13일
0

김영한님의 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 강의를 듣고 정리한 내용입니다.

통합 테스트

  • @SpringBootTest 스프링 통합 테스트시 붙여주는 어노테이션
  • @Transactional 어노테이션을 붙여주어야 테스트 실행시에 디비에 넣은 데이터가 commit되지 않고 테스트 종료할때 전부 rollback해준다.
  • 의존성 주입할때 테스트에서는 간단하게 필드 주입으로 해주어도 된다. (테스트 코드는 프로덕션에서 쓰이는게 아니라서 상관 없음)
@Autowired MemberService memberService
@Autowired MemberRepository memberRepository
  • 반드시 그런 것은 아니지만, 통합 테스트보다 순수한 단위 테스트가 훨씬 더 좋은 테스트일 확률이 높다.
  • 작은 단위로 쪼개서 테스트하고 컨테이너 없이 테스트하는 훈련할 것.
  • 어쩔 수 없이 컨테이너를 올려서 테스트를 해야 한다? 테스트 설계가 잘못되었을 확률이 높다.

테스트 통과는 되는데 빨간색 메시지가 떠서 찝찝할 때

7월 12, 2022 7:43:32 오후 org.junit.platform.launcher.core.EngineDiscoveryOrchestrator lambda$logTestDescriptorExclusionReasons$7
정보: 0 containers and 1 tests were Method or class mismatch

테스트는 통과하는데 위와 같은 메시지가 빨간 글씨로 뜨는 경우가 있다. 그냥 넘어가도 상관없지만 신경쓰여서 찾아보니 같은 문제가 있는 사람들이 많았다.

해결 방법 출처
IntelliJ 설정을 바꿔주면 쉽게 해결된다.

Preferences > Build, Executions, Deployment > Gradle 에서 Build and run usingRun tests using의 값을 IntelliJ IDEA로 바꿔주면 된다. (아래 이미지의 노란색 네모박스)

0개의 댓글