Testcontainers在Spring App之前启动,在Spring App之后关闭

ifmq2ha2  于 2023-08-04  发布在  Spring
关注(0)|答案(1)|浏览(131)

我有这个整合测试:

@RunWith(SpringRunner.class)
@SpringBootTest(classes = MySpringApplication.class, webEnvironment = DEFINED_PORT)
public class UspControllerIT {

    @Test
    public void someIntegrationTest() {
       ...
    }
}

字符串
我的Spring应用程序正在使用一个数据库、一个队列和其他我放在docker-compose. yml中的东西。
我想在Spring应用程序之前启动Docker合成,并在Spring应用程序关闭后停止(我不想在应用程序中看到由于无法建立或关闭连接而导致的错误)。
是否有使用测试容器的方法?
先谢了。

von4xj4u

von4xj4u1#

您可以在代码中的某处使用静态变量将其作为Singleton容器初始化。
在您的应用程序将停止-他们将自动停止。

abstract class TestContainers {
     public static DockerComposeContainer environment;

 static {
    environment = new DockerComposeContainer(new File("src/test/resources/compose-test.yml"))
        .withExposedService("redis_1", 4321, Wait.forListeningPort())
        .waitingFor("db_1", Wait.forLogMessage("started", 1))
        .withLocalCompose(true);
}
}

字符串
然后你应该用它来扩展你的类

class MyComposedTests extends TestContainers {

@Test
void init() {
}
}

相关问题