Spring Boot 测试容器
Posted
技术标签:
【中文标题】Spring Boot 测试容器【英文标题】:Spring boot test containers 【发布时间】:2021-10-19 06:18:19 【问题描述】:是否可以将测试容器(即 oracle-xe)与 spring boot 一起使用,但将其用作本地部署的数据库。例如,让 spring boot 在开发配置文件中启动,并让测试容器也启动并成为用于敌人后端..
如果它被用于测试,我已经看到了一些示例,但随后它被拆除/关闭。
有什么想法吗?
更新:
所以我设法在测试容器中连线并启动它.. 设置了弹簧属性..
当 schema.sql 文件加载时,我得到一个错误 no privleges...我正在尝试创建一个新模式并向其中添加一些表..但它似乎不起作用..
“表空间'SYSTEM'没有权限”
CREATE USER PM3 IDENTIFIED by PM3
CREATE TABLE PM3.JOBS (
JOB_ID NUMBER(3) NOT NULL,
CUSTOMER_ID NUMBER(3) NOT NULL,
DESCRIPTION VARCHAR(200),
constraint PK_JOB_ID primary key (JOB_ID)
);
【问题讨论】:
【参考方案1】:Testcontainers 的核心维护者之一 Sergei Egorov 在 his blog 上展示了如何实现这一目标。
它归结为在启动 Spring Boot 应用程序之前添加一个新的 Spring Boot 入口类和一个初始化程序。这样您就可以重用任何 Testcontainers 设置进行本地开发。
【讨论】:
这大致就是我想要的。然而,我确实使用类似的方法进行了管理,通过启动容器并设置数据源.. 来启动它,但我似乎无法让 spring 用 data.sql 填充测试容器数据库。我想知道是不是因为我动态设置了属性.. 你可以为你的问题添加一些代码提示吗? 我现在已经用更多信息更新了这个问题。【参考方案2】:既然你可以manually control the lifecycle of the containers 这应该是完全可能的。如果develop
配置文件处于活动状态,只需添加一些启动和停止容器的代码。
【讨论】:
以上是关于Spring Boot 测试容器的主要内容,如果未能解决你的问题,请参考以下文章
测试容器在 Spring Boot 项目中启动两个容器而不是一个
Spring Boot,测试容器以测试发送到外部数据库的查询