代码之家  ›  专栏  ›  技术社区  ›  ng.newbie

EmbeddedMongo每次都从随机端口开始?

  •  0
  • ng.newbie  · 技术社区  · 3 年前

    我正在使用 Flapdoodle's Embedded Mongo 在我的Spring Boot应用程序上运行集成测试。

    我有如下测试:

    @SpringBootTest(classes = Application.class)
    @TestMethodOrder(OrderAnnotation.class)
    class IntegrationTests {
    
    @BeforeAll
        static void setup() throws Exception {
            String ip = "localhost";
            int port = 65000;
    
            IMongodConfig mongodConfig = new MongodConfigBuilder().version(Version.Main.PRODUCTION)
                    .net(new Net(ip, port, Network.localhostIsIPv6())).build();
    
            MongodStarter starter = MongodStarter.getDefaultInstance();
            mongodExecutable = starter.prepare(mongodConfig);
            mongodExecutable.start();
    
            mongoTemplate = new MongoTemplate(MongoClients.create(String.format(CONNECTION_STRING, ip, port)), "test");
    
    }
    

    但每次MongoDB服务器在随机端口上启动时:

    [2021-03-16T01:41:26.026Z] [com.mongodb.diagnostics.logging.SLF4JLogger] [main] [71] [INFO ] Opened connection [connectionId{localValue:4, serverValue:2}] to localhost:55359
    

    我尝试过为端口使用不同的值,但都不起作用。

    为什么我的配置没有得到尊重?

    如果需要我提供任何其他信息,请告诉我。

    0 回复  |  直到 3 年前
        1
  •  0
  •   Philippe Simo    3 年前

    只需排除默认加载的AutoConfiguration类:

    @DataMongoTest(excludeAutoConfiguration = EmbeddedMongoAutoConfiguration.class)
    class IntegrationTests { ... }
    

    顺便说一句,我使用了切片测试注释 @DataMongoTest 而不是 @SpringBootTest 以便仅引导测试所需的内容(与MongoDB相关的bean)。