Skip to content

Reactive MongoDB Repository 테스트 작성 가이드

LEE YOUNG WOO edited this page Dec 7, 2022 · 1 revision

아래 문서의 내용을 베이스로 하여 추가적인 내용에 대해 기술합니다. 먼저 아래 문서를 살펴보기를 권장합니다.

테스트 흐름

1

예제코드

@DataMongoTest
@ActiveProfiles("tc")
@Testcontainers
@ExtendWith(MongoDBTestSupportExtension.class)
@ContextConfiguration(classes = {
        ReactiveMongoDBConfiguration.class,
        DefaultUserReactiveRepository.class,
})
@EnableAutoConfiguration
class DefaultUserReactiveRepositoryTest implements TestContainersReactiveMongoDBTest {
    @Autowired
    @Qualifier("defaultUserReactiveRepository")
    private DefaultUserReactiveRepository defaultUserReactiveRepository;

    @Autowired
    private ReactiveMongoTemplate reactiveMongoTemplate;

    @Override
    public ReactiveMongoTemplate getReactiveMongoTemplate() {
        return reactiveMongoTemplate;
    }

    @DisplayName("User 데이터 저장 기본 테스트")
    @Test
    public void saveTest() {
    }
}

implements TestContainersReactiveMongoDBTest

Reactive MongoDB Repository 를 테스트 하기 위해서는 테스트 클래스의 TestContainersReactiveMongoDBTest 인터페이스를 구현해야 합니다. MongoDBTestSupportExtensiongetReactiveMongoTemplate() 메소드를 통해 ReactiveMongoTemplate 를 주입받아 사용하게 됩니다.

@DataMongoTest

MongoDB 테스트에 필요한 기본적인 어노테이션 입니다.

@ActiveProfiles("tc")

profile을 ‘tc’ 로 지정하여 테스트를 수행합니다.

@TestContainers

이 어노테이션이 지정되면testcontainers 구성요소가 초기화 됩니다.

@ExtendWith(MongoDBTestSupportExtension.class)

Reactive MongoDB Repository 테스트를 수행하는데 필요한 처리를 담당하는 extension 클래스인 MongoDBTestSupportExtension 을 적용합니다. 테스트 케이스를 수행할 때 마다 실행해야 하는 코드의 자동화를 담당합니다.

@ContextConfiguration(classes = {ReactiveMongoDBConfiguration.class, ‘테스트대상Repository’.class})

프로젝트 구성에 맞추어 ReactiveMongoDBConfiguration클래스 (src/main/java 내의 @Configuration 클래스) 와 테스트 대상이 되는 Repository 구현 클래스를 지정해야 합니다. 위의 예제 코드에서는 DefaultUserReactiveRepositoryTest 를 테스트 하는 경우에 대한 코드 입니다.

@EnableAutoConfiguration

@ContextConfiguration 에서 지정한 클래스들에 대한 구성을 자동화합니다.