SpringBootTest 2

[Spring] 테스트 환경 격리 시키기 - 각 테스트마다 DB 분리하기 (@Transactional 을 사용하면 안되는 이유)

🔥현재 NEXT STEP 에서 진행하는 ATDD 강의를 수강하고 있습니다. 강의에서 예전부터 고민하던 통합테스트 환경에서 데이터베이스를 격리하는 방법에 대해 알게되어 기록을 남겨보고자 합니다. [예전에 시도해봤던 방법] 통합테스트 환경에서 시도한건 아니지만 단위테스트에서 JPA 에 의존하는 Repository 를 온전히 격리해 어떤상황에서든 성공하는 단위테스 환경을 구축하고자 했던적이 있습니다. 👉 service 단위 테스트 하기 - DB 와 독립된 테스트 환경 구축 (service unit test) 하지만 1. 단위테스트 환경에서는 사실상 Mocking 을 하는것보다 큰 장점이 없었고 2. 필요로하는 Repsitory 기능을 매번 정의해주어야해서 많이 번거로웠습니다. 👏🏻 그치만 통합테스트 환경에서는..

[Spring Junit] @SpringBootTest + @Autowired 에러 "Could not autowire. No beans of "

때는 바야흐로.. ATDD 과정 수강 중 각각의 E2E 인수테스트의 데이터베이스를 서로 영향받지않게 격리 시켜주기 위해 test 패키지에 만든 별도의 클래스를 빈으로 올려 @Autowired 로 주입받고자 했습니다. 하지만 에러가 뜨는군요! DataBaseCleanUp 이라는 Class는 Test 패키지 아래에서만 존재하는 클래스입니다. @TestComponent public class DataBaseCleanUp { .. 생략 } @SpringBootConfiguration 의 scan 대상으로는 포함시키지 않기위해 @TestComponent 를 적용해 주었습니다. @TestComponent는 Test 를 위한 Component 이지만, javadoc 설명처럼 직접적으로 ComponentScan 을 사..

Spring/Spring err 2023.07.05