-
[Spring] Multi-Module에서 Domain 모듈 테스트 실행하는 법Server/Spring 2022. 6. 23. 01:21728x90반응형
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 {}
예를들면 위와 같이 사용할 수 있습니다.
Reference
반응형'Server > Spring' 카테고리의 다른 글
[Spring] 멀티 모듈에서 모듈별 yml 파일 관리하는 법 (1) 2022.10.04 [Spring] Security WebSecurityConfigurerAdapter Deprecated 해결하기 (0) 2022.06.29 [JPA] @OneToOne 관계에서 N + 1 발생하는 이유가 무엇일까? (4) 2022.06.04 [Spring] Spring Security, React를 사용하면서 CORS 허용하는 방법 (0) 2021.12.23 [Spring] AWS EC2에서 Spring Access log, logger log 저장하는 법 (0) 2021.12.09