spring - 如何使用 TestContainers + Spring Boot + oracle-xe
问题描述
我尝试将测试容器与 Oracle-XE 模块和 Spring Boot 一起使用,到目前为止,当我启动测试时,我遇到了异常:
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 映像,我在以下位置创建了testcontainers.properties
文件src/test/resources
:
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
解决方案
您可以创建一个测试配置类,使用 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);
}
}
}
推荐阅读
- android - 如何以编程方式将片段添加到后台堆栈?
- javascript - 图片不完整。如何回调和加载图像?在 setInterval 内绘制函数
- android - 我想从这个收到的 JSON 响应中提取标签的内容。怎么做?
- excel - 将用户表单中的 10 个条目添加到工作表
- twitter-bootstrap - 引导卡相同宽度
- java - 检测类后没有触发Java断点?
- javascript - 定位每个 div(相同的类名)并将其内容复制到 Javascript 中的另一个 div
- bash - 如何从文件中提取未知数量的行并为每个行生成一个新文件?
- python - Python - BeautifulSoup - NoneType 被返回;价值绝对存在
- flutter - 您如何为来自 Firestore 的流的更改设置动画?