问题标签 [spring-test-dbunit]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1636 浏览

java - 使用 spring-test-dbunit 转义保留的数据库关键字

如何使用Spring-test-dbunit 框架转义 SQL Server 关键字?

在我的@DatabaseSetup("sampleData.xml")文件中,我有一个名为的表File,它是 SQL Server 中的保留关键字。为了使查询在 SQL Server 上成功运行,保留关键字需要用方括号 ( [File]) 封装。

Expoting Dataset 到在 DBunit 中给出错误的 xml 文件,我看到这可以通过设置模式转义配置在 dbunit 中完成。使用 Spring-test-dbunit 时,我不知道在哪里或如何放置此配置。

使用提供的 xml 提要将测试数据插入数据库时​​,我在哪里/如何告诉 spring-test-dbunit 框架正确转义数据库关键字?

如果您想查看代码,请告诉我应该发布哪些摘录,我很乐意这样做。

0 投票
2 回答
3265 浏览

spring - 如何在春季自动装配之前发生 DBUnit @DatabaseSetup?

考虑典型的 DBUnit Spring 测试(参见https://github.com/springtestdbunit/spring-test-dbunit):

我已经验证的是,并且已经预料到,自动装配将在 DatabaseSetup 之前发生。这必须发生,因为 DBUnit 依赖于应用程序上下文来提供配置的数据源。

问题是 UnitUnderTest bean 有一个 @PostConstruct ,它在其中从 DB 加载一些数据,但是由于自动装配发生在 DBunit 设置之前,因此在此阶段数据将不可用。

关于如何以干净的方式解决此问题的任何想法?

0 投票
1 回答
911 浏览

spring - 弹簧测试数据库单元。比较预期数据集和实际数据集时如何忽略行顺序

我正在使用 com.github.springtestdbunit 在我的 DAO 层上进行持久性测试。问题是我不知道数据将以何种顺序保存到数据库中,因此在比较预期数据集和实际数据集时我需要忽略行顺序。基本上这是相同的问题,数据库单元应该忽略行的顺序,但我想知道如何在不破坏库的 @ExpectedDatabase 注释及其枚举参数 DatabaseAssertionMode 的情况下修复它。

0 投票
0 回答
858 浏览

junit - DBUnit 中的序列支持

我们正在分析 DBUnit 以进行数据驱动的单元测试。我们能够使用下面的代码将 oracle DB 表导出到一个平面 xml 数据集,并将生成的数据集用作我们的 junit 测试的输入。

org.dbunit.database.QueryDataSet 提供添加表但不添加序列的选项。我们还需要以相同的方式将序列导出到 DBUnit 数据集。有没有办法做到这一点?

我们正在寻找使用开源工具对存储库层进行单元测试(数据驱动)的工具。有没有其他类似于 DBUnit 的开源工具?

0 投票
2 回答
1270 浏览

spring - 使用 Spring DBUnit、Spring Data 和嵌入式 H2 数据库时出现回滚错误

我陷入了一个古玩错误。

我有一个小的 DBUnit 测试:

而已。首先,我想搜索一个由 DBUnit (wbSchluesselwertData.xml) 预填充的条目。之后,我想通过 Spring Data CrudRepository 在嵌入式 H2 内存数据库中保存两个条目。

此数据源由 HibernateJpaVendorAdapter 和适配器本身包装在 LocalContainerEntityManagerFactoryBean 中:

如果我运行上面的单元测试,我会收到以下错误:

因此,由于连接已关闭,后续保持实体的尝试失败。hibernate persist 和我忽略的使用 ob Spring DBUnit 之间是否存在现有影响?

任何帮助表示赞赏。提前谢谢了。

问候, 博多

0 投票
3 回答
12482 浏览

java - Spring Test DBUnit 和表模式名称

@DatabaseSetup使用Spring Test DBUnit中的注释时是否可以设置表模式名称?目前我正在这样使用它:

user-data.xml:(我也尝试将元素名称设置为 user.system_user 没有任何运气)

在这里,我正在使用名为 user 的模式创建我的表:

这是我在运行测试时遇到的异常:

0 投票
1 回答
639 浏览

java - MySQL 增量列和 DBunit 数据集的问题

我正在尝试使用 dbUnit 为 MySQL 中的一个表编写一个集成测试,该表有一个autoincrement. 集成测试如下所示:

对于没有列的表,我有相同的集成测试结构,increment并且测试工作得很好。dataset.xml看起来像:

调试我可以看到设置数据所采取的操作是删除所有数据并执行插入,更具体地说:

插入某个表(id,regexp,descr)值(?,?,?)

我得到的错误是:

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'regexp, descr) values (1, 'something', 'descr')' at line 1

为了完整起见,DbUnitConfiguration.class具有以下 spring bean 设置:

0 投票
1 回答
722 浏览

java - Spring Data Rest 单元测试选择性地通过

我正在研究 Spring Data Rest(2.0.1.RELEASE 和 Spring 4.0.2.RELEASE)的使用,并编写了一个简单的服务。我还使用 DbUnit 编写了一个简单的测试类(见下文)。

不幸的是,当我运行测试时,只有 findAll 方法通过。如果我注释掉 findAll 方法,那么 findInvestigationalProductById 会通过并且 directLink 会失败。如果我随后将 findInvestigationalProductById 注释掉,那么 directLink 就会通过。

这些方法都不会改变数据状态,所以我想知道是否有一些我忽略的配置会导致这种行为。

0 投票
1 回答
944 浏览

spring-aop - spring-mvc-test 自动回滚事务在服务层上配置了 AOP xml

我有以下 Spring MVC 应用程序堆栈:

控制器 -> 服务 -> DAO (Repository) -> 实体 -> MySql InnoDB

事务被配置为使用 AOP xml 配置从服务层开始,并且应用程序运行良好:

现在,我正在使用 spring-mvc-test 框架、UnitDB 等编写 Spring MVC 测试。测试类具有以下配置:

测试看起来像这样:

基本上我想要的是在测试环境中测试(使用)现有的 Spring AOP 配置,最初设置一些数据库数据,运行测试并在测试完成后回滚所有内容

在上述配置中,测试正在启动他们自己的事务,在给定的传播配置中,该事务在服务层遇到另一个事务,由 AOP xml 配置启动,我得到锁超时错误,因为由测试启动的事务正在等待由服务层的 AOP 配置。

我只是在编写测​​试,我不应该修改实际代码,只修改测试代码。我的任务是找到一种方法来回滚使用给定配置的测试所做的所有更改

任何想法表示赞赏。

编辑

这是有问题的案例:

  1. 测试类启动一个新的大事务,所有测试都自动回滚。
  2. dbunit 用初始数据填充数据库
  3. 测试启动控制器测试
  4. 控制器调用服务层,例如保存/更新实体(由 DBUnit 在测试类的开头插入),新事务在服务层开始(由 aop:config 配置),但支持步骤 #1 中的大事务
  5. 繁荣,发生错误:超过锁定等待超时;尝试重启事务

我认为DBUnit插入的数据仍然没有提交,因为它在同一个事务中。我需要找到一种方法在单独的事务中使用 DBUnit 插入初始数据,但在测试结束时仍将其回滚。

0 投票
0 回答
1096 浏览

junit - 测试方法中无法访问 DBUnit 数据集

我有如下测试

一切似乎都很好,因为在日志中我看到以下内容:

dbunit 数据集在事务创建后加载,因此数据集数据在 select 中应该可见,但不可见。执行选择时,不会检索数据集中的记录。

为了验证是否正在加载数据集,我尝试插入重复键并启动了异常,因此我假设数据集已正确加载。

数据源和事务管理器配置为:

DAO 未配置为事务性的,因为在应用程序中它不是。但我也尝试过使其具有事务性,结果是一样的。

我不明白为什么在这一行:

数据集不可见。


找到解决方案

我通过使用解决了这个问题TransactionAwareDataSourceProxy

最后我得到了数据源的以下配置: