DataBase/MongoDB

[MongoDB] Spring Boot에서 임베디드 MongoDB를 사용하는 방법

누구세연 2024. 6. 30. 15:37

MongoDB를 사용하며 Test 할 때 어떻게 작업할지 고민하다가 Embedded MongoDB가 있다는 사실을 알고 적용해 보았습니다.

 

임베디드 MongoDB란?

임베디드 MongoDB는 테스트 환경에서 MongoDB를 별도로 설치하지 않고도 MongoDB 서버를 실행할 수 있는 라이브러리입니다.

이를 통해 단위 테스트 및 통합 테스트를 보다 간편하게 작성할 수 있습니다.

 

의존성 추가하기

Spring Boot 프로젝트에 임베디드 MongoDB를 추가하려면 build.gradle 파일에 다음 의존성을 추가합니다.

dependencies {
    // Other dependencies...

    testImplementation 'de.flapdoodle.embed:de.flapdoodle.embed.mongo.spring30x:4.6.2'
}

이 의존성은 Spring 3.x 버전과 호환되는 MongoDB 임베디드 서버를 제공합니다.

버전에 맞는 라이브러리를 사용하여 테스트 환경을 설정할 수 있습니다.

 

아래의 주소에서 각자 버전에 맞는 라이브러리 버전을 추가해 주세요!

https://github.com/flapdoodle-oss/de.flapdoodle.embed.mongo?tab=readme-ov-file

 

GitHub - flapdoodle-oss/de.flapdoodle.embed.mongo: ...will provide a platform neutral way for running mongodb in unittests.

...will provide a platform neutral way for running mongodb in unittests. - flapdoodle-oss/de.flapdoodle.embed.mongo

github.com

 

임베디드 MongoDB 테스트해보기

임베디드 MongoDB를 활용한 MongoDB 데이터베이스가 올바르게 설정되고, 정상적으로 수행되는지 확인해 보겠습니다.

@SpringBootTest(properties = "de.flapdoodle.mongodb.embedded.version=5.0.5")
class MoviereviewApplicationTests {
	
    // Spring 의존성 주입 어노테이션입니다. MongoTemplate 객체를 자동으로 주입받아
	// MongoDB 데이터베이스와 상호작용할 수 있게 합니다.
    @Autowired
    private MongoTemplate mongoTemplate;

    @Test
    public void test() {
    	// 'mongoTemplate.save()' 메서드를 호출하여 Movie 객체를 MongoDB 컬렉션에 저장합니다.
        mongoTemplate.save(Movie.builder()
                .title("test")
                .build());
    }

    @Test
    void contextLoads() {
    }
}

properties 속성에서 'de.flapdoodle.mongodb.embedded.version=5.0.5'를 설정하여 임베디드 MongoDB의 버전을 지정하여 실행합니다.

실행 결과

정상적으로 실행되는 것을 확인할 수 있습니다.