Skip to content

Latest commit

 

History

History
72 lines (43 loc) · 3.46 KB

Multi Module의 Domain 모듈에서 테스트 코드 작성하기.md

File metadata and controls

72 lines (43 loc) · 3.46 KB

Multi Module Domain 모듈에서 테스트 코드 실행하는 법

image

위와 같이 main 클래스를 가지는 api 모듈domain 모듈로 2개가 분리되어 있습니다.


스크린샷 2022-06-21 오전 10 23 25

api 모듈에서 domain 모듈을 사용할 때 위와 같이 참조해서 사용하는데요. 즉, api 모듈에서 Domain 모듈을 import해서 사용한다고 생각하면 됩니다.


Domain 모듈에서 테스트 코드를 실행해보자.

스크린샷 2022-06-21 오전 10 32 48

그러면 이제 Domain 모듈에서 통합 테스트 코드를 간단하게 작성하여 실행해보면 위와 같은 아리송한 에러 메세지를 볼 수 있습니다.

에러가 발생하는 이유를 생각해보면 Domain 모듈에서 통합 테스트 코드를 작성한다면 @SpringBootTest 어노테이션을 사용해서 진행할 것인데요.

@SpringBootTest 어노테이션은 Spring Context와 모든 Spring Bean 들을 띄워서 테스트 환경을 만들게 되는데요.

스크린샷 2022-06-23 오전 12 09 43

도메인 모듈에는 SpringBootApplication 어노테이션이 존재하지 않기 떄문에, 도메인 모듈은 Spring Context를 띄울 수 없어서 에러가 발생하는 것입니다.

  • SpringBootApplication
  • ConfigurationContext

즉, Domain 모듈에서 통합 테스트를 돌리기 위해서는 위의 두 가지 중에 하나를 추가해서 통합 테스트할 떄 Spring Context가 뜰 수 있게 하면 통합 테스트를 실행할 수 있습니다.


SpringBootApplication

image

@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