Spring Boot Embedded MongoDB Testing

Yeon Seong Hwang·2023년 2월 24일
0
post-thumbnail

Spring Boot에서 MongoDB와 연동한 테스트를 진행할 때 embedded MongoDB를 사용하면 별도로 MongoDB 설치를 하지 않고도 테스트가 가능하다.

dependencies {
    testImplementation 'de.flapdoodle.embed:de.flapdoodle.embed.mongo'
}

Embedded MongoDB를 사용하기 위해 dependency를 추가하고 테스트 코드를 돌려보면 다음과 같은 error로 실패하는 경우가 있다.

2023-02-24 15:22:39.503  INFO 27392 --- [       Thread-4] o.s.b.a.mongo.embedded.EmbeddedMongo     : note: noprealloc may hurt performance in many applications
2023-02-24 15:22:39.510  INFO 27392 --- [       Thread-4] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2023-02-24T15:22:39.509+0900 I CONTROL  [initandlisten] MongoDB starting : pid=31532 port=27017 dbpath=C:\Users\sami0\AppData\Local\Temp\embedmongo-db-ea261c4c-83ed-4c52-bbde-daf8bec85063 64-bit host=raye
2023-02-24 15:22:39.510  INFO 27392 --- [       Thread-4] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2023-02-24T15:22:39.510+0900 I CONTROL  [initandlisten] targetMinOS: Windows Vista/Windows Server 2008
2023-02-24 15:22:39.510  INFO 27392 --- [       Thread-4] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2023-02-24T15:22:39.510+0900 I CONTROL  [initandlisten] db version v3.2.3
2023-02-24 15:22:39.510  INFO 27392 --- [       Thread-4] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2023-02-24T15:22:39.510+0900 I CONTROL  [initandlisten] git version: b326ba837cf6f49d65c2f85e1b70f6f31ece7937
2023-02-24 15:22:39.510  INFO 27392 --- [       Thread-4] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2023-02-24T15:22:39.510+0900 I CONTROL  [initandlisten] allocator: tcmalloc
2023-02-24 15:22:39.510  INFO 27392 --- [       Thread-4] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2023-02-24T15:22:39.510+0900 I CONTROL  [initandlisten] modules: none
2023-02-24 15:22:39.510  INFO 27392 --- [       Thread-4] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2023-02-24T15:22:39.510+0900 I CONTROL  [initandlisten] build environment:
2023-02-24 15:22:39.510  INFO 27392 --- [       Thread-4] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2023-02-24T15:22:39.510+0900 I CONTROL  [initandlisten]     distarch: x86_64
2023-02-24 15:22:39.510  INFO 27392 --- [       Thread-4] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2023-02-24T15:22:39.510+0900 I CONTROL  [initandlisten]     target_arch: x86_64
2023-02-24 15:22:39.511  INFO 27392 --- [       Thread-4] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2023-02-24T15:22:39.510+0900 I CONTROL  [initandlisten] options: { net: { bindIp: "127.0.0.1", http: { enabled: false }, port: 27017 }, security: { authorization: "disabled" }, storage: { dbPath: "C:\Users\sami0\AppData\Local\Temp\embedmongo-db-ea261c4c-83ed-4c52-bbde-daf8bec85063", journal: { enabled: false }, mmapv1: { preallocDataFiles: false, smallFiles: true }, syncPeriodSecs: 0.0 } }
2023-02-24 15:22:39.512  INFO 27392 --- [       Thread-4] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2023-02-24T15:22:39.510+0900 E NETWORK  [initandlisten] listen(): bind() failed errno:10048 媛? ?냼耳? 二쇱냼(?봽濡쒗넗肄?/?꽕?듃?썙?겕 二쇱냼/?룷?듃)?뒗 ?븯?굹留? ?궗?슜?븷 ?닔 ?엳?뒿?땲?떎. for socket: 127.0.0.1:27017
2023-02-24 15:22:39.514  INFO 27392 --- [       Thread-4] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2023-02-24T15:22:39.510+0900 E STORAGE  [initandlisten] Failed to set up sockets during startup.
2023-02-24 15:22:39.514  INFO 27392 --- [       Thread-4] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2023-02-24T15:22:39.510+0900 I CONTROL  [initandlisten] dbexit:  rc: 48
2023-02-24 15:22:39.515  WARN 27392 --- [    Test worker] s.c.a.AnnotationConfigApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'embeddedMongoServer' defined in class path resource [org/springframework/boot/autoconfigure/mongo/embedded/EmbeddedMongoAutoConfiguration.class]: Invocation of init method failed; nested exception is java.lang.RuntimeException: Could not start process: failed errno:10048 媛? ?냼耳? 二쇱냼(?봽濡쒗넗肄?/?꽕?듃?썙?겕 二쇱냼/?룷?듃)?뒗 ?븯?굹留? ?궗?슜?븷 ?닔 ?엳?뒿?땲?떎. for socket: 127.0.0.1:27017
2023-02-24T15:22:39.510+0900 E STORAGE  [initandlisten] Failed to set up s
2023-02-24 15:22:39.519  INFO 27392 --- [    Test worker] ConditionEvaluationReportLoggingListener : 

test/resources/application.yaml에서 mongo db port를 기본 port인 27017이 아닌 다른 값으로 지정해주면 해결이 가능하다.

spring:
  data:
    mongodb:
      host: localhost
      port: 0
      database: local
profile
SW Engineer

0개의 댓글