Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在SpringBoot2.2集成测试中使用嵌入式MongoDB?_Java_Spring_Mongodb_Spring Boot_Integration Testing - Fatal编程技术网

Java 如何在SpringBoot2.2集成测试中使用嵌入式MongoDB?

Java 如何在SpringBoot2.2集成测试中使用嵌入式MongoDB?,java,spring,mongodb,spring-boot,integration-testing,Java,Spring,Mongodb,Spring Boot,Integration Testing,我想使用嵌入式MongoDB实例,而不是连接到本地主机MongoDB 在集成测试中,我只使用mockMvc。 我的测试类上的注释 @Profile("it") @SpringBootTest //@DataMongoTest - tried to do with that and can't run app because of missing Security beans. @AutoConfigureMockMvc @ExtendWith(SpringExtension.

我想使用嵌入式MongoDB实例,而不是连接到本地主机MongoDB

在集成测试中,我只使用mockMvc。 我的测试类上的注释

@Profile("it")
@SpringBootTest
//@DataMongoTest - tried to do with that and can't run app because of missing Security beans.
@AutoConfigureMockMvc
@ExtendWith(SpringExtension.class)
public class ControllerIntegrationTest {
   @Autowired
   private WebApplicationContext context;

   @Autowired
   private MockMvc mockMvc;
...
}
MongoDB配置

@Configuration
@EnableMongoRepositories
public class MongodbConfiguration {

   @Value("${mongo.db.url:mongodb://127.0.0.1}")
   private String MONGO_DB_URL;

   @Value(("${mongo.db.port:27017}"))
   private int MONGO_DB_PORT;

   @Value("${mongo.db.name:admin}")
   private String MONGO_DB_NAME;

   @Bean
   public MongoClient mongo() {
      return MongoClients.create(MONGO_DB_URL + ":" + MONGO_DB_PORT);
   }

   @Bean
   public MongoDbFactory mongoDbFactory(MongoClient mongoClient) {
      return new SimpleMongoClientDbFactory(mongoClient, MONGO_DB_NAME);
   }

   @Bean
   public WriteConcernResolver writeConcernResolver() {
      return action -> {
         System.out.println("Using Write Concern of MAJORITY");
         return WriteConcern.MAJORITY;
      };
   }

   @Bean
   public MongoCustomConversions customConversions(OffsetDateTimeReadConverter offsetDateTimeReadConverter,
         OffsetDateTimeWriteConverter offsetDateTimeWriteConverter) {
      return new MongoCustomConversions(asList(offsetDateTimeReadConverter, offsetDateTimeWriteConverter));
   }
}
我在build.gradle文件中有“de.flapdoodle.embed:de.flapdoodle.embed.mongo:2.2.0”:

    testImplementation "org.springframework.boot:spring-boot-starter-test"
    testImplementation "org.mockito:mockito-core:2.23.4"
    testImplementation "org.assertj:assertj-core:3.16.1"
    integrationTest "de.flapdoodle.embed:de.flapdoodle.embed.mongo:2.2.0"
我正试图这样做,如中所述,但这是从2018年开始的,因此可能已经过时


每当我运行测试时,它仍会尝试连接到本地主机MongoDB实例,而不是运行embedded。

鉴于它是it,我建议您使用MongoDB容器来运行测试,它将使您对应用程序有更准确的了解,并可与CI/CD管道集成。

鉴于它是一个it平台,我建议您使用MongoDB容器来运行测试,它将使您对应用程序有更准确的了解,并可与CI/CD管道集成