위와 같이 main 클래스
를 가지는 api 모듈
과 domain
모듈로 2개가 분리되어 있습니다.
api
모듈에서 domain
모듈을 사용할 때 위와 같이 참조해서 사용하는데요. 즉, api 모듈에서 Domain 모듈을 import
해서 사용한다고 생각하면 됩니다.
그러면 이제 Domain
모듈에서 통합 테스트
코드를 간단하게 작성하여 실행해보면 위와 같은 아리송한 에러 메세지를 볼 수 있습니다.
에러가 발생하는 이유를 생각해보면 Domain
모듈에서 통합 테스트
코드를 작성한다면 @SpringBootTest
어노테이션을 사용해서 진행할 것인데요.
@SpringBootTest
어노테이션은 Spring Context
와 모든 Spring Bean
들을 띄워서 테스트 환경을 만들게 되는데요.
도메인 모듈에는 SpringBootApplication
어노테이션이 존재하지 않기 떄문에, 도메인 모듈은 Spring Context
를 띄울 수 없어서 에러가 발생하는 것입니다.
SpringBootApplication
ConfigurationContext
즉, Domain
모듈에서 통합 테스트를 돌리기 위해서는 위의 두 가지 중에 하나를 추가해서 통합 테스트할 떄 Spring Context
가 뜰 수 있게 하면 통합 테스트를 실행할 수 있습니다.
@SpringBootApplication
public class TestConfiguration {
}
위와 같이 TestConfiguration
과 같이 @SpringBootApplication
어노테이션을 가지고 있는 클래스를 하나 생성해놓으면 도메인 모듈 통합 테스트를 실행할 때 스프링 컨텍스트를 띄울 수 있게 됩니다.
위처럼 @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 {}
예를들면 위와 같이 사용할 수 있습니다.