如何使用特定 docker 图像启动测试容器?
How to start testcontainers with specific docker image?
我有一个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
我有一个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