如何使用TestContainers + Spring Boot + oracle-xe
How to use TestContainers + Spring Boot + oracle-xe
我尝试将测试容器与 Oracle-XE 模块和 Spring 引导一起使用,到目前为止,当我启动我的测试时,我遇到了异常:
Caused by: java.lang.IllegalArgumentException: JDBC URL matches jdbc:tc: prefix but the database or tag name could not be identified
在我的 src/test/application.properties
中,我将 url 数据源声明为:
spring.datasource.url=jdbc:tc:oracle-xe://somehostname:someport/databasename?TC_INITSCRIPT=schema-test.sql
为了指示要为 oracle-xe 提取的 docker 映像,我在 src/test/resources
中创建了文件 testcontainers.properties
:
oracle.container.image=oracleinanutshell/oracle-xe-11g:1.0.0
你知道怎么做吗?
它与 MySQL 完美配合,数据源 url :
spring.datasource.url=jdbc:tc:mysql:5.6.23://somehostname:someport/databasename?TC_INITSCRIPT=schema-test.sql
您可以进行测试配置class,使用 oracle xe 容器配置重新定义数据源 bean。
public class OracleIT {
@ClassRule
public static OracleContainer oracleContainer = new OracleContainer();
@BeforeAll
public static void startup() {
oracleContainer.start();
}
@TestConfiguration
static class OracleTestConfiguration {
@Bean
DataSource dataSource() {
HikariConfig hikariConfig = new HikariConfig();
hikariConfig.setJdbcUrl(oracleContainer.getJdbcUrl());
hikariConfig.setUsername(oracleContainer.getUsername());
hikariConfig.setPassword(oracleContainer.getPassword());
return new HikariDataSource(hikariConfig);
}
}
}
我尝试将测试容器与 Oracle-XE 模块和 Spring 引导一起使用,到目前为止,当我启动我的测试时,我遇到了异常:
Caused by: java.lang.IllegalArgumentException: JDBC URL matches jdbc:tc: prefix but the database or tag name could not be identified
在我的 src/test/application.properties
中,我将 url 数据源声明为:
spring.datasource.url=jdbc:tc:oracle-xe://somehostname:someport/databasename?TC_INITSCRIPT=schema-test.sql
为了指示要为 oracle-xe 提取的 docker 映像,我在 src/test/resources
中创建了文件 testcontainers.properties
:
oracle.container.image=oracleinanutshell/oracle-xe-11g:1.0.0
你知道怎么做吗?
它与 MySQL 完美配合,数据源 url :
spring.datasource.url=jdbc:tc:mysql:5.6.23://somehostname:someport/databasename?TC_INITSCRIPT=schema-test.sql
您可以进行测试配置class,使用 oracle xe 容器配置重新定义数据源 bean。
public class OracleIT {
@ClassRule
public static OracleContainer oracleContainer = new OracleContainer();
@BeforeAll
public static void startup() {
oracleContainer.start();
}
@TestConfiguration
static class OracleTestConfiguration {
@Bean
DataSource dataSource() {
HikariConfig hikariConfig = new HikariConfig();
hikariConfig.setJdbcUrl(oracleContainer.getJdbcUrl());
hikariConfig.setUsername(oracleContainer.getUsername());
hikariConfig.setPassword(oracleContainer.getPassword());
return new HikariDataSource(hikariConfig);
}
}
}