我正在嘗試使用 Testcontainers 和 Oracle-xe 資料庫設定集成測驗。我收到以下錯誤:
application.properties 條目:spring.datasource.driver-class-name=org.testcontainers.jdbc.ContainerDatabaseDriver
Driver org.testcontainers.jdbc.ContainerDatabaseDriver claims to not accept jdbcUrl, jdbc:oracle:thin:@localhost:55802/xepdb1
我的測驗擴展:
public class OracleDBContainerExtension implements AfterAllCallback, BeforeAllCallback {
private OracleContainer container;
@Override
public void beforeAll(ExtensionContext context) {
// gvenzl/oracle-xe:18.4.0-slim
container = new OracleContainer();
container.start();
container.waitingFor(
Wait.forListeningPort().withStartupTimeout(Duration.ofSeconds(180L)));
System.setProperty("spring.datasource.url", container.getJdbcUrl());
System.setProperty("spring.datasource.password", container.getPassword());
System.setProperty("spring.datasource.username", container.getUsername());
}
@Override
public void afterAll(ExtensionContext context) {
container.stop();
}
}
測驗:
@Testcontainers
@SpringBootTest
@ExtendWith(OracleDBContainerExtension.class)
public class HeroRepositoryTest {
@Autowired
private HeroRepository repositoryUnderTest;
@Test
public void shouldReturnHeroesSuccessfully() {
System.out.println("junit version: " Version.id());
List<Hero> heroes = repositoryUnderTest.allHeros();
assertThat(heroes).hasSize(1);
repositoryUnderTest.addHero(new Hero("bb", "bb"));
Collection<Hero> heroesAfter = repositoryUnderTest.allHeros();
assertThat(heroesAfter).hasSize(2);
}
}
uj5u.com熱心網友回復:
來自關于Testcontainers JDBC 支持的檔案——
如果您使用 JDBC URL 支持,則無需實體化容器的實體 - Testcontainers 會自動完成。
換句話說,您應該使用ContainerDatabaseDriver帶有tc:前綴的 JDBC URL或帶有getJdbcUrl()原始驅動程式的容器實體(或者讓系統為您檢測驅動程式)。
因此,如果您將其設為普通 Oracle 驅動程式:
spring.datasource.driver-class-name=org.testcontainers.jdbc.ContainerDatabaseDriver,它應該可以作業。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/379587.html
標籤:春天 甲骨文 测试容器 oracle-xe testcontainers-junit5
下一篇:本周總結.
