首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用TestContainers + Spring Boot + oracle-xe

如何使用TestContainers + Spring Boot + oracle-xe
EN

Stack Overflow用户
提问于 2019-08-01 19:52:34
回答 1查看 4.9K关注 0票数 4

我尝试将测试容器与Oracle-XE模块和Spring Boot一起使用,到目前为止,当我启动测试时,我遇到了异常:

代码语言:javascript
复制
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数据源声明为:

代码语言:javascript
复制
spring.datasource.url=jdbc:tc:oracle-xe://somehostname:someport/databasename?TC_INITSCRIPT=schema-test.sql

为了指示要为oracle-xe拉入的docker映像,我在src/test/resources中创建了文件testcontainers.properties

代码语言:javascript
复制
oracle.container.image=oracleinanutshell/oracle-xe-11g:1.0.0

你知道怎么做吗?

它可以完美地与MySQL配合使用,其中包含数据源url:

代码语言:javascript
复制
spring.datasource.url=jdbc:tc:mysql:5.6.23://somehostname:someport/databasename?TC_INITSCRIPT=schema-test.sql
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-01 21:42:02

您可以创建一个测试配置类,使用oracle xe容器配置重新定义数据源bean。

代码语言:javascript
复制
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);
            }
      }

}
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57308437

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档