为了账号安全,请及时绑定邮箱和手机立即绑定

TestContainers、Couchbase 和 Spring Boot -

TestContainers、Couchbase 和 Spring Boot -

哈士奇WWW 2023-08-16 17:40:38
我们正在为我们的数据库创建集成Spring Boot 2.1.7.RELEASE测试Couchbase。我们正在使用测试容器,当测试运行完成时,我们收到此错误:java.util.concurrent.RejectedExecutionException:任务 java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask@da0432 被 java.util.concurrent.ScheduledThreadPoolExecutor@238be2 拒绝[已终止,池大小 = 0,活动线程 = 0,排队任务 = 0,已完成任务= 0]在我们的 pom 中:  <dependency>        <groupId>org.testcontainers</groupId>        <artifactId>couchbase</artifactId>        <version>1.12.1</version>        <scope>test</scope>    </dependency>    <dependency>        <groupId>org.testcontainers</groupId>        <artifactId>testcontainers</artifactId>        <version>1.12.1</version>        <scope>test</scope>    </dependency>在我们的“集成测试配置”类中:@RunWith(SpringRunner.class)@SpringBootTest(classes = {MyApplication.class, IntegrationTestConfig.CouchbaseTestConfig.class},    webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)public abstract class IntegrationTestConfig{@ClassRulepublic static CouchbaseContainer couchbaseContainer = new CouchbaseContainer()        .withIndex(true)        .withQuery(true)        .withClusterAdmin("clusterUser", "clusterPassword")        .withNewBucket(DefaultBucketSettings.builder()                .enableFlush(true)                .name("bucketName")                .password("bucketPassword")                .quota(100)                .replicas(0)                .type(BucketType.COUCHBASE)                .build());@BeforeClasspublic static void beforeClass() throws IOException{    log.debug("Starting containers...");    couchbaseContainer.start();}@AfterClasspublic static void afterClass(){    log.debug("Stopping containers...");    couchbaseContainer.stop();}
查看完整描述

2 回答

?
繁星coding

TA贡献1797条经验 获得超4个赞

您可能需要在守护程序模式下运行数据库,这样它就不会自动停止

查看完整回答
反对 回复 2023-08-16
?
四季花海

TA贡献1811条经验 获得超5个赞

因此,在这方面浪费了两天令人沮丧的时间后,事实证明问题出在以下函数上:


@AfterClass

public static void afterClass(){

  log.debug("Stopping containers...");

  couchbaseContainer.stop();

}

只需删除对


couchbaseContainer.stop();

解决了问题。


看起来,即使正在afterClass停止Couchbase容器,其他东西也在尝试停止它,如堆栈跟踪中所示:


at org.testcontainers.couchbase.CouchbaseContainer.stopCluster(CouchbaseContainer.java:198)

at org.testcontainers.couchbase.CouchbaseContainer.stop(CouchbaseContainer.java:193)

stop()所以实际上解决方案是从其中删除afterClass并让其他东西停止容器。


查看完整回答
反对 回复 2023-08-16
  • 2 回答
  • 0 关注
  • 124 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信