【发布时间】:2021-10-17 07:33:55
【问题描述】:
我在 Micronaut 应用程序中使用带有 JUnit 5 的测试容器。我有很多集成测试,我想为每个集成测试创建并运行一次测试容器。
**对不同文件的第一次测试**
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
@MicronautTest
public class DiscountGetListenerTest extends TestContainerFixture {
@Inject
static IDiscountProducer iDiscountProducer;
@Test
@DisplayName("Should return the discount based on the specified id")
void shouldReturnTheDiscountBasedOnTheSpecifiedId() {
}
}
对不同文件的第二次测试
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
@MicronautTest
public class DiscountListenerTest extends TestContainerFixture {
@Inject
IDiscountProducer iDiscountProducer;
@Test
@DisplayName("Should return discounts list")
void shouldReturnDiscountsList() {
var item = iDiscountProducer.Find(new DiscountCriteriaCommand(null)).blockingGet();
assertTrue(item.size() == 0);
}
}
测试容器夹具
@Testcontainers
public class TestContainerFixture {
@Container
public GenericContainer mongoDBContainer = new GenericContainer(DockerImageName.parse("mongo:4.0.10"))
.withExposedPorts(27017);
@Container
public GenericContainer rabbitMQContainer = new GenericContainer(DockerImageName.parse("rabbitmq:3-management-alpine"))
.withExposedPorts(5672);
}
当我在每个集成测试上运行应用程序时,容器被创建并启动,但是,我想创建一次并启动容器一次
例如
在每个测试用例中,都会创建并启动容器...如何创建并启动容器一次??
【问题讨论】:
标签: java junit junit5 micronaut testcontainers