如何使用特定的 docker 镜像启动测试容器?

问题描述

我有一个 junit 测试,使用了 testcontainers-1.15.1。我怎样才能开始一个明确的形象?因为:

@SpringBootTest
public class ContainerTest {
   private final JdbcDatabaseContainer DB = new MariaDBContainer("mariadb:10.5.8");
  
   static {
       DB.start();
   }
   
   @Test
   public void test() { 

   } 
}

结果:默认的 10.3.6 容器已启动。

[][] 2021-02-04 14:32:50,741 INFO ?.3.6]: Creating container for image: mariadb:10.3.6
[][] 2021-02-04 14:32:51,597 INFO ?.3.6]: Container mariadb:10.3.6 is starting: d9ccf77f4b9165ccd1690ee5cb8437f43e7d853dfe5121d468a391d67eccef7d

application.properties

spring.datasource.url=jdbc:tc:mariadb:///test
spring.datasource.username=test
spring.datasource.password=test

解决方法

这可能是由于过去不同 Testcontainers 模块的构造函数的行为不一致。它已通过 this commit 修复,并且自 Testcontainers 1.15.0 起应该可用。

不确定您的示例是否是伪测试代码,但以下示例是一个有效的可复制粘贴示例:

public class MariaDbContainerTest {

  private static final JdbcDatabaseContainer DB = new MariaDBContainer("mariadb:10.5.8");

  static {
    DB.start();
  }

  @Test
  public void test() {

  }
}

我已经针对 Testcontainers 1.15.0 和 1.15.1 对其进行了测试,它可以在我的机器上运行

更新:我没有看到除了作为测试一部分的手动容器定义之外,您还在 application.properties 文件中指定了 Testcontainers 的 JDBC 支持。

选择 JDBC 支持手动容器定义,您的问题应该得到解决。

使用 JDBC 支持时,您还可以指定数据库的版本:jdbc:tc:mariadb:10.5.8:///test

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...