도커를 사용하도록 할 것임. 그러면 도커 컨테이너에 띄워놔야 한다. 하지만 그렇게 하지 않고 테스트를 실행할 때 컨테이너를 띄워주는 TestContainers 라는 tool이 있다.
잘 적용되어있는지 확인하기. Test Resources 로 설정되어 있다.
ConsoleEmailService.java 에 test도 추가해주자. 왜? 이메일 서비스로 등록된 빈이 없기 때문에 에러가 날 것이다. 안 그래도 테스트 컨테이너 하나 띄우는 것도 느린데 매번 클래스마다 띄우는 것은 비효율적이다. 그래서 AbstractContainerBaseTest.java를 만드는 것이다.
AbstractContainerBaseTest .java
import org.testcontainers.containers.PostgreSQLContainer;
public abstract class AbstractContainerBaseTest {
static final PostgreSQLContainer POSTGRE_SQL_CONTAINER;
static {
POSTGRE_SQL_CONTAINER = new PostgreSQLContainer();
POSTGRE_SQL_CONTAINER.start();
}
}
MockMvcTest.java 에서 @ActiveProfiles에 test를 지정했으면 resource/application-test.properties가 읽힐 것이다. 그러면 이 파일에서 설정한 driver 대로 데이터 소스가 만들어질 것이다. 그럼 이 데이터 소스를 test에서 사용하는 것이다.
출처 : 인프런 백기선님의 스프링과 JPA 기반 웹 애플리케이션 개발