创建跨 Maven 测试阶段工作的临时数据库?

2023-12-31

我加入了一个项目,该项目有很多带有 SQL 语句的文件,用于创建用于集成测试的数据库。

我想知道如何使用这些文件来创建用于单元测试的数据库 (使用java和maven)。

我可以为每个单元测试创​​建一个 HSQL 内存数据库,甚至可以使用 spring jdbc 嵌入式数据库功能,但是在测试设置中需要执行太多 SQL 语句,因此这是不可扩展的。

所以我想在maven测试阶段开始时创建一个临时数据库(加载SQL语句),让单元测试访问这个临时数据库并执行各种操作,然后在maven结束时删除临时数据库测试阶段。

我查看了 sql-maven-plugin,它允许我执行测试阶段执行,但我不确定如何配置可在所有单元测试中使用的临时数据库。没有可连接的服务器,并且内存数据库无法跨多个单元测试工作(我假设)。

一种选择是使用唯一的临时文件,例如将 JDBC 驱动程序 URL 指定为 jdbc:hsqldb:file:/path/to/temporary/file,但我不确定如何在 maven 中生成唯一的临时文件。

关于如何做到这一点有什么建议,或者是否有更好的方法可以采取?

Update:我决定使用在 target/db 目录中创建的基于文件的数据库。我使用 maven clean 插件在运行测试之前删除 target/db 目录,并使用 maven sql 插件从脚本创建数据库。


对于这种情况,我创建了德比行家插件 https://github.com/carlspring/derby-maven-plugin。它可从 Maven Central 获取,因此您无需添加任何额外的存储库或任何内容。

你可以这样使用它:

    <project ...>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.carlspring.maven</groupId>
                    <artifactId>derby-maven-plugin</artifactId>
                    <version>1.8</version>
                    <configuration>
                        <basedir>${project.build.directory}/derby</basedir>
                        <port>1527</port>
                    </configuration>
                    <executions>
                        <execution>
                            <id>start-derby</id>
                            <phase>pre-integration-test</phase>
                            <goals>
                                <goal>start</goal>
                            </goals>
                        </execution>
                        <execution>
                            <id>stop-derby</id>
                            <phase>post-integration-test</phase>
                            <goals>
                                <goal>stop</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    </project>

欲了解更多信息,您还可以查看USAGE https://github.com/carlspring/derby-maven-plugin/blob/master/USAGE.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

创建跨 Maven 测试阶段工作的临时数据库? 的相关文章

  • 如何通过Object Id和Column Id查询表数据?

    有桌子Clients PK LastName Name Address 1 Vidal Arturo St 2 Lavezzi Ezequiel St 3 Cuadrado Guillermo St 我想得到 通过以下查询 我可以得到前四列
  • 如何在maven中使用pom.xml解压任意文件

    我的路径 C ptc Windchill 10 1 Windchill 中有一个 zip 文件 请谁能告诉我如何使用maven解压这个文件 Maven 有一个与 Ant 一起使用的插件 使用该插件 您可以创建 Ant Tasks 该任务是一
  • Junit Mockito 测试一切

    我现在正在寻找更多时间但没有结果 请帮忙 这是我要测试的课程 public class DBSelectSchema extends Database private static final Logger LOG Logger getLo
  • MySql如何通过过滤多列来限制多个数字?

    我想从数据库中获取 4 个不同类别的 50 个问题 我想要 4 个不同类别中每个类别的不同数量的问题 我的结果集必须包含第一类 12 个问题 第二类 20 个问题 第三类 10 个问题和第四类 8 个问题 我的问题表中总共有 50 个问题
  • 混合语言源目录布局

    我们正在运行一个使用多种不同语言的大型项目 Java Python PHP SQL 和 Perl 到目前为止 人们一直在自己的私有存储库中工作 但现在我们希望将整个项目合并到一个存储库中 现在的问题是 目录结构应该是什么样的 我们应该为每种
  • 按小时拆分日期/时间数据并将日期/时间范围展开为行

    我正在尝试使用 SQL Server 将一系列日期 时间数据扩展为多行 例如 我的数据看起来像 Date StartTime EndTime EmployeeID ShiftType 10 1 2019 8 30 00AM 4 57 00P
  • Oracle 获取列值发生变化的行

    假设我有一张桌子 比如 ID CCTR DATE 1 2C 8 1 2018 2 2C 7 2 2018 3 2C 5 4 2017 4 2B 3 2 2017 5 2B 1 1 2017 6 UC 11 23 2016 还有其他字段 但我
  • 返回行位置 - Postgres

    我返回一个带有位置的表 select from select row number over as position from organization result where data1 Hello 返回这个 这是正确的 data1 H
  • (SQL) 识别字段中字符串格式多次出现的位置

    我需要将叙述字段 自由文本 拆分为多行 目前的格式如下 Case Reference Narrative XXXX XX 123456 Endless Text up to 50k characters 在作为文本的叙述字段中 各个条目 当
  • 在同一个表上组合两个 SQL SELECT 语句

    我想结合这两个 SQL 查询 SELECT FROM Contracts WHERE productType RINsell AND clearTime IS NULL AND holdTime IS NOT NULL ORDER BY g
  • SQL Server PIVOT 函数

    我有一个检索所有代理及其模块的查询 结果集将每个模块返回 1 行 SELECT am agentID AS agentid pa agentDisplayName agentdisplayname m ModuleName ModuleNa
  • 在 Oracle 中使用触发器记录对表的更改

    我的一门课有一个项目 当我们的两个表发生更改时 我们需要创建一个日志 插入 更新 删除 我们需要使用Oracle触发器和PL SQL 在日志文件中 我们需要记录用户ID 日期时间 IP地址和事件 插入 更新 删除 我知道如何设置触发器 但我
  • SQL 大表中的随机行(使用 where 子句)

    我有一个网站 人们可以在其中对汽车进行投票 向用户展示 4 辆汽车 他 她可以投票选出他们最喜欢的汽车 桌子cars有重要的列 car id int 10 not auto increment so has gaps views int 7
  • 使用MySQL计算单个表中借方和贷方的余额

    下面的 MySQL 表包含带有关联金额的借方或贷方 操作 如何选择具有非零 余额 的所有 CLIENT ID 我尝试将表连接到自身以计算所有借方和贷方总额 但有些东西无法正常工作 CLIENT ID ACTION TYPE ACTION A
  • 是否允许在流水线 PL/SQL 表函数中使用 SELECT?

    管道函数的文档指出 在 SQL 语句 通常是SELECT 并且在大多数示例中 管道函数用于数据生成或转换 接受客户作为参数 但不发出任何 DML 语句 现在 从技术上讲 可以使用 SELECT 而不会出现 Oracle 中的任何错误 ORA
  • 如何在测试套件中定义 JUnit 方法规则?

    我有一个类 它是 JUnit 测试类的 JUnit 套件 我想定义一个规则on the suite 这是可以做到的 但需要做一些工作 您还需要定义自己的 Suite 运行程序和测试运行程序 然后在测试运行程序中重写 runChild 使用以
  • 使用 Junit5 对 LiveDataobserverForever 进行单元测试会导致 NullPointer 异常

    我正在使用 Android 数据绑定来监听实时数据更改 并且我想观察视图模型级别的更改 而不是观察片段 然后向视图模型发送回调 这observerForever很有趣 因为它对我有用 但是 当我运行测试时 出现以下错误 java lang
  • 如何自动执行使用 Maven 构建的 Eclipse 插件的版本号更新过程

    我正在处理一个与该项目类似的项目此处描述 http www vogella com articles EclipseTycho article html 因此 它在父 pom xml 中有一些模块
  • SQL Server 相当于 MySQL 的 USING

    在 MySQL 中 当您连接不同表中具有相同名称的列时 可以在连接中使用关键字 USING 例如 这些查询产生相同的结果 SELECT FROM user INNER JOIN perm USING uid SELECT FROM user
  • 在 Postgres 中的数组字段上应用聚合函数?

    是否可以对整数 字段 或其他数字数组 中的所有值应用聚合 如 avg stddev CREATE TABLE widget measurement integer insert into widget measurement values

随机推荐

  • 如果访问X86系统中不存在的物理地址怎么办?

    我正在开发一个 Linux 内核模块 它通过处理进程的页表将物理地址范围映射到进程虚拟地址空间 然后 我脑子里有一个问题 如果PTE指向一个不存在的物理地址会发生什么 例如 我的 X86 笔记本电脑有 8GB DRAM 如果 PTE 的值为
  • Flexbox div 不占据整个宽度

    我试图理解如何display flex有效 但每当我设置它时 孩子们都不会占据整个宽度 我预计三个 div 会占据屏幕宽度的 33 我究竟做错了什么 flexbox display flex flexbox div border 1px s
  • 创建一个 DateTimeOffset,设置为与服务器不同时区的午夜

    我有一个设置为 EST 的服务器 我想知道我需要做什么来创建设置为当天午夜但在不同时区的 DateTimeOffset 例如太平洋标准时间 获取相关的TimeZoneInfo 构造一个DateTime其中包含local时间 即午夜 Call
  • C++(11):如果两者都很好,何时使用直接初始化或复制初始化

    在重复的呼喊开始之前 我知道以下问题 以及其他一些问题 与此问题非常相关 在 C 中 复制初始化和直接初始化之间有区别吗 https stackoverflow com questions 1051379 is there a differ
  • 使用 android 捕获按键

    如何使用 android SDK 捕获手机按键 我已经环顾了几个小时没有找到任何东西 例如 在某些情况下 我想在用户按下手机上的 挂断 按钮时捕获消息 然后在消息到达操作系统之前将其丢弃 这可能吗 您可以处理视图中的关键事件 也可以处理整个
  • C 中 read() 和 fgets() 之间的区别

    我想从标准输入流中读取数据 使用 read 或 fgets 从 stdin 流读取有什么区别吗 我用 fgets 附加了以下两段代码并阅读 有了fgets 我可以使用java程序轻松地编写和读取c程序 通过读写 我的 java 程序挂起 等
  • 如何一次将多个值分配给一个结构体?

    我可以在 Foo 结构体的初始化中执行此操作 Foo foo bunch of things initialized 但是 我不能这样做 Foo foo foo bunch of things initialized 那么 两个问题 为什么
  • 如何使用 React.js 在 Botframework v4 聊天应用程序中执行发送“打字指示器”?

    我正在使用 botframework v4 构建一个聊天应用程序 以 React js 作为前端 以 net core 作为后端来生成令牌 我想使用 React 在我的聊天中实现 Typing 指示器 尝试使用 window WebChat
  • Ubuntu 上的 rpy2 安装

    我对 Linux 还很陌生 在安装 Rpy2 时遇到了一些严重的问题 我通过突触包管理器安装了旧版本的 Rpy2 但我需要更新版本并将其删除 如 Rpy2 文档中所述 Rpy2 目录中的所有文件 我下载了tar gz 来自 SourceFo
  • 如何使用 Timer 创建时钟?

    我正在尝试创建一个七段显示 它使用计时器以及 ActionListener 和 actionPerformed 自动移动 我认为如果我使用 for if 语句 它会自动从 0 循环到 2 并为每个数字段设置背景颜色 但是 当我显示它时 它停
  • HtmlAgility:没有出现任何内容(C#,UWP)

    我尝试使用 htmlagilitypack 来解析表格 完成后我意识到我忘记证明 htmlagility 部分是否有效 很明显它不起作用 我也不知道我错过了什么 我在哪里做错了 因为我是初学者 所以请不要对我太严厉 public parti
  • 获取资源错误

    每次我在主要活动中调用 getResources 时 都会导致错误并且应用程序被迫退出 如果我调用 getApplicationContext getResources 甚至在 Eclips 中的全新项目中也会发生这种情况 在通话之前我需要
  • 使用 CSS 替换 ul 项目符号点样式

    我想替换 ul 列表的列表样式类型属性 以便外部是一个圆盘 然后一个内部 ul 列表是一个圆 再一个内部是一个圆盘 依此类推 本质上 我想要的是这样的 ul li Lorem ipsum li li ul li Lorem ipsum li
  • 如何将匿名类型转换为已知类型

    我有一个匿名类型变量 该变量是从另一个函数获取的 我们无法更改它 var a property1 abc property2 def 我有一堂课 class Myclass string property1 string property2
  • 根据用户输入设置选中的复选框

    我有这些 HTML 元素 div div
  • 将 sql_variant 转换为 varchar 形式提供的 data_type

    我有一个如下的sql表 Types table Name varchar 50 Type varchar 50 Car varchar 50 Apples int 我正在使用另一个表来存储值 例如 Apples table V
  • 如何在 iBatis 中获得排序结果?

    我有一个表 mgr employee 有 2 列 managerName teamEmployee 虽然我在 sql 中进行了排序 但我在 java 中得到了未排序的 resultMap 如何获得排序后的地图 为什么 iBatis 会混淆
  • Kubernetes:从远程浏览器访问仪表板

    我有一个小型 Kubernetes 集群 主要是 这本教程 https www profiq com kubernetes cluster setup using virtual machines 因此 我在 Virtual Box Cen
  • Highcharts - 休息 1 小时

    我似乎无法弄清楚为什么 x 轴上的时间总是晚一个小时 我知道它与这条线有关 但我不知道将其更改为什么 date Date parse line 0 UTC 我当前的时区是伦敦 我有这个文件 index php
  • 创建跨 Maven 测试阶段工作的临时数据库?

    我加入了一个项目 该项目有很多带有 SQL 语句的文件 用于创建用于集成测试的数据库 我想知道如何使用这些文件来创建用于单元测试的数据库 使用java和maven 我可以为每个单元测试创 建一个 HSQL 内存数据库 甚至可以使用 spri