Testcontainers 是一个用于集成测试的 Java 库,它可以在测试期间启动和管理 Docker 容器。默认情况下,Testcontainers 会使用本地安装的 Docker 环境来启动容器。

如果你希望 Testcontainers 使用自带的 Docker 环境而不是本机的 Docker 环境,可以通过以下步骤进行设置:

  1. 首先,确保你已经在项目中引入了 Testcontainers 的依赖。

  2. 在测试类中,创建一个自定义的 Testcontainers 配置类,实现 org.testcontainers.DockerClientFactory 接口。

    import org.testcontainers.DockerClientFactory;
    import org.testcontainers.dockerclient.DockerClientConfig;
    import org.testcontainers.dockerclient.DockerClientProviderStrategy;
    
    public class CustomDockerClientFactory implements DockerClientFactory {
    
        @Override
        public DockerClientProviderStrategy getDockerClientProviderStrategy() {
            return new CustomDockerClientProviderStrategy();
        }
    
        @Override
        public DockerClientConfig getDockerClientConfig() {
            return DockerClientConfig.createDefaultConfigBuilder()
                    // 设置自定义的 Docker 环境配置
                    .withDockerHost("tcp://your-docker-host:2375")
                    .build();
        }
    }
    
  3. 创建一个自定义的 Docker 客户端提供策略类,实现 org.testcontainers.dockerclient.DockerClientProviderStrategy 接口。

    import org.testcontainers.dockerclient.DockerClientProviderStrategy;
    import org.testcontainers.dockerclient.DockerClientProviderStrategyFactory;
    import org.testcontainers.dockerclient.transport.DockerHttpClient;
    
    public class CustomDockerClientProviderStrategy implements DockerClientProviderStrategy {
    
        @Override
        public DockerHttpClient getClient() {
            // 返回一个自定义的 DockerHttpClient 实例,用于与自定义的 Docker 环境进行通信
            return null;
        }
    
        @Override
        public void setClient(DockerHttpClient dockerHttpClient) {
            // 设置自定义的 DockerHttpClient 实例
        }
    
        @Override
        public void initialize() {
            // 初始化自定义的 Docker 环境
        }
    
        @Override
        public void shutdown() {
            // 关闭自定义的 Docker 环境
        }
    }
    
  4. 在测试类的 @BeforeClass 注解的方法中,设置自定义的 Testcontainers 配置类。

    import org.junit.BeforeClass;
    import org.junit.ClassRule;
    import org.testcontainers.DockerClientFactory;
    
    public class MyTest {
    
        @BeforeClass
        public static void setup() {
            DockerClientFactory.instance().withDockerClientFactory(new CustomDockerClientFactory());
        }
    
        // ...
    }
    

通过以上步骤,你可以使用 Testcontainers 的自带 Docker 环境来进行集成测试,而不依赖于本机的 Docker 环境

testcontainers 使用自带的docker环境不使用本机的docker环境

原文地址: http://www.cveoy.top/t/topic/h08q 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录