[Spring] Multi-Module에서 Domain 모듈 테스트 실행하는 법
Multi Module Domain 모듈에서 테스트 코드 실행하는 법
위와 같이 main 클래스
를 가지는 api 모듈
과 domain
모듈로 2개가 분리되어 있습니다.
api
모듈에서 domain
모듈을 사용할 때 위와 같이 참조해서 사용하는데요. 즉, api 모듈에서 Domain 모듈을 import
해서 사용한다고 생각하면 됩니다.
Domain 모듈에서 테스트 코드를 실행해보자.
그러면 이제 Domain
모듈에서 통합 테스트
코드를 간단하게 작성하여 실행해보면 위와 같은 아리송한 에러 메세지를 볼 수 있습니다. 에러가 발생하는 이유를 생각해보면 Domain
모듈에서 통합 테스트
코드를 작성한다면 @SpringBootTest
어노테이션을 사용해서 진행할 것인데요.
@SpringBootTest
어노테이션은 Spring Context
와 모든 Spring Bean
들을 띄워서 테스트 환경을 만들게 되는데요.
도메인 모듈에는 SpringBootApplication
어노테이션이 존재하지 않기 떄문에, 도메인 모듈은 Spring Context
를 띄울 수 없어서 에러가 발생하는 것입니다.
SpringBootApplication
ConfigurationContext
즉, Domain
모듈에서 통합 테스트를 돌리기 위해서는 위의 두 가지 중에 하나를 추가해서 통합 테스트할 떄 Spring Context
가 뜰 수 있게 하면 통합 테스트를 실행할 수 있습니다.
SpringBootApplication
@SpringBootApplication
public class TestConfiguration {
}
위와 같이 TestConfiguration
과 같이 @SpringBootApplication
어노테이션을 가지고 있는 클래스를 하나 생성해놓으면 도메인 모듈 통합 테스트를 실행할 때 스프링 컨텍스트를 띄울 수 있게 됩니다.
ContextConfiguration
위처럼 @SpringBootApplication
을 사용하지 않는다면 ContextConfiguration
어노테이션을 사용해서 통합 테스트를 위한 스프링 컨텍스트를 띄워서 사용하는 방법입니다.
@ContextConfiguration defines class-level metadata that is used to determine how to load and configure an ApplicationContext for integration tests.
@ContextConfiguration(classes = {
JasyptConfig.class
})
@SpringBootTest
public class JasyptConfigTest {}
예를들면 위와 같이 사용할 수 있습니다.