【问题标题】:Spring JUnit 5 ExtendWith TestContainerSpring JUnit 5 ExtendWith TestContainer
【发布时间】:2021-10-27 15:35:53
【问题描述】:

我正在尝试重新利用一个容器,并且我正在尝试使用 JUnit5 ExtendWith 功能,但我仍然得到:

与 localhost:5432 的连接被拒绝。

如果我在每个测试中都有相同的逻辑,那么一切都会按预期工作。

@Testcontainers
@SpringBootTest
@ExtendWith({PostgresTestContainersExtension.class})
public class ApplicationJUnit5Test {
  @Autowired
  private HeroClassicJDBCRepository repositoryUnderTest;

  @Test
  public void test1() {
    System.out.println("junit version: " + Version.id());
    Collection<Hero> heroes = repositoryUnderTest.allHeros();
    assertThat(heroes).hasSize(1);
    repositoryUnderTest.addHero(new Hero("bb", "bb"));
    Collection<Hero> heroesAfter = repositoryUnderTest.allHeros();
    assertThat(heroesAfter).hasSize(2);
  }
}

扩展:

 public class PostgresTestContainersExtension implements BeforeAllCallback,
BeforeTestExecutionCallback {

private static final String IMAGE_NAME = "registry.mycomp.com/db/mariadb:10.4.11";
@DynamicPropertySource
static void properties(DynamicPropertyRegistry registry) {
    registry.add("spring.datasource.url", container::getJdbcUrl);
    registry.add("spring.datasource.password", container::getPassword);
    registry.add("spring.datasource.username", container::getUsername);
}
@Container
public static PostgreSQLContainer container = new PostgreSQLContainer()
    .withUsername("duke")
    .withPassword("password")
    .withDatabaseName("test");

@Override
public void beforeAll(ExtensionContext extensionContext) {
    startContainerIfNeed();
}

@Override
public void beforeTestExecution(ExtensionContext extensionContext) {
    startContainerIfNeed();
}

public void startContainerIfNeed() {
    if (!container.isRunning()) {
        container.start();
    }
}
}

【问题讨论】:

    标签: spring-boot junit junit5 testcontainers testcontainers-junit5


    【解决方案1】:

    据我所知@DynamicPropertySource 只能在测试类本身或超类中使用。您必须将 properties 方法移过来。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-27
      • 2019-10-06
      • 2019-12-21
      • 2017-06-04
      • 1970-01-01
      • 2020-07-17
      相关资源
      最近更新 更多