问题标签 [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 回答
16490 浏览

database - 在 Maven/Junit/DBUnit 项目的集成测试之前/之后创建/删除数据库的最佳方法?

我见过一些人使用 maven-sql-plugin 来做到这一点。但这似乎是一个更适合 DBUnit 的任务......也许在整个测试套件的开头。

这里的最佳做法是什么?

0 投票
1 回答
1385 浏览

transactions - 使用 Spring Test 自动回滚 DAO 集成测试是一种好习惯吗?

如果我用 @Transactional 注释我的 DAO 集成测试方法,Spring Test 将在每个测试方法完成后愉快地回滚对数据库的任何更改。这些看起来非常方便,因为我可以使用 @BeforeClass 方法加载测试数据一次,所有清理工作都为我处理。

但我质疑这是否是一种好的做法,因为我会错过发现提交期间可能发生的故障的机会。在 DAO 的 dbunit 集成测试中使用事务来帮助清理的共识是什么?

0 投票
5 回答
10834 浏览

junit - 如何使用 Spring Test 为每个案例加载一次 DBUnit 测试数据

Spring Test 有助于回滚测试方法中对数据库所做的任何更改。这意味着无需在每个测试方法之前花时间删除/重新加载测试数据。

但是如果你使用 @BeforeClass Junit 注释,那么这会强制数据加载器是静态的。这里探讨的一个问题: 为什么 jUnit 的 fixtureSetup 必须是静态的?

如果数据初始化方法是静态的,那么数据连接方法和数据源也必须是静态的......并且不断地......强制一切都是静态的......这是行不通的。在这一点上,我问 - 当您必须为每个测试删除/重新加载测试数据时,Spring Test 回滚更改的能力有什么好处??!?!

0 投票
5 回答
4407 浏览

xml - 多模块 Java/Maven 项目中 DBUnit 的 XML DTD 路径?

我有一个多模块 Maven 项目。在持久模块中,我有许多引用 DTD 的 XML 文件数据文件:

DTD 与 XML 文件存储在同一目录中,甚至 Eclipse 也将这些 XML 文件报告为有效。

但是,当我运行应用程序时,DBUnit FlatXMLDataSet 会抛出 FileNotFound 异常,因为它无法定位 DTD。它显然是在根项目目录(例如 myproject/)中寻找 DTD。我原以为它会在与 XML 文件本身相同的目录中查找 DTD(例如 myproject/persist/target/test-data)。

查看 DBUnit 源代码,它有这样的说法“相对 DOCTYPE uri 是从当前工作目录中解析的”。

有什么好的方法来解决这个问题?

0 投票
1 回答
993 浏览

java - 关于DBUNIT和Junit的问题

我有一个用 PL/SQL 编写的数据库进程,我想使用 DBUNIT 进行测试。pl/sql 程序处理来自一个表的数据并将新数据生成到一个新表中。在某些情况下,它还会更新原始表上的字段。

我对如何使用 dbunit 进行测试感到有些困惑。阅读它,看起来我必须在 xml 文件中指定数据,但我无法弄清楚如何构造 xml 文件。考虑一下我想我需要以下数据文件

  1. 包含 tableA 数据的 xml 文件
  2. 包含 tableB 数据的 xml 文件
  3. 包含更新表 A 数据的 xml 文件

工作流程是这样的

  • 加载表A
  • pl/sql 进程将处理数据并在 tableB 中生成结果并更新 tableA 中的一些字段
  • 为 tableB 加载 xml 文件并比较结果。

我对 dbunit 如何提供帮助感到有些困惑。例如

  • xml 数据是否加载到内存中,然后与 TableB 中的数据进行比较?
  • 我将如何将更新与 tableA 进行比较?

如果您能提出更好的替代方案或方法,也请告诉我。

谢谢

0 投票
2 回答
3776 浏览

java - 使用带有 Hibernate 和 DbUnit 的 AbstractTransactionalDataSourceSpringContextTests - 未找到插入的数据

总之,我正在尝试为使用 Hibernate 的 Dao 编写单元测试。我也在使用 Spring,所以我尝试扩展 AbstractTransactionalDataSourceSpringContextTests 并使用 DBUnit 在 onSetUpInTransaction 方法中的每个测试之前将数据插入数据库。

从我的日志中,我可以看到 DbUnit 能够成功地将数据插入 onSetUpInTransaction 就好了。但是,当我运行使用 Dao(以及因此使用 Hibernate)的测试方法来尝试访问该数据(testGetPersonById2)时,找不到数据,即使所有这些都应该发生在同一个事务中。在测试方法完成运行(失败)后,我看到来自 AbstractTransactionalDataSourceSpringContextTests 的日志语句表明事务确实得到了正确回滚。

似乎 onSetUpInTransaction 和 Hibernate 会话必须使用不同的事务,但我不知道为什么。有没有人有这样的例子?关于我缺少什么的建议?

这是我到目前为止所得到的:

更新:这是我的弹簧配置:

0 投票
1 回答
2027 浏览

unit-testing - 在连续测试中加载数据集失败并出现“关闭会话”

我有 2 个测试类,都用unitils注释进行了注释

目标数据库是一个HSQLDB,它在一个带有testng注释的抽象超类方法中启动:

当测试运行程序(Maven Surefire)到达第二次测试时,数据库已正确实例化(我可以在日志中看到),但unitils或实际上dbunit无法加载数据集。

我很困惑为什么dbunit设法在第一个测试类中连接到HSQLDB,而在第二个测试类中却没有。

有人有线索吗?

谢谢!J。

0 投票
1 回答
692 浏览

java - dbunit 断言没有正确抛出失败

以下是一个测试org.dbunit.Assertion.assertEquals(ITable a, ITable b)工作的测试用例

这里两个 DefaultTable 的值都不匹配,但 JUnit 仍然没有失败上述测试用例。我从 Eclipse 运行它,它在测试用例下导致 0 次错误和 0 次失败和无根测试,如下所示,

我调试了 DBUnit API,它根据需要抛出数据不匹配异常,但最后从 SpringJUnit4ClassRunner 返回时,它不会作为测试用例失败抛出。

我想我在这里缺少一些东西。请纠正我或让我知道解决方案。预先感谢。

0 投票
1 回答
11926 浏览

php - PHPUnit 和 DBUnit - 入门

有没有人有关于如何开始将 DBUnit 层添加到我的 PHPUNIt 测试的良好工作教程或书籍的链接?

我试过按照代码

XML 是通过mysqldump命令创建的。我很乐意使用 CSV,甚至是内存中的数组(不管怎样)

不幸的是,我似乎无法启动这个系统。

0 投票
1 回答
850 浏览

hibernate - OutOfMemoryError:尝试使用 HSQLDB、DBUnit、unitils、Hibernate、Spring 优化 Maven 多模块单元测试

我有一个包含数千个测试的大型多模块 Maven 项目。每个测试使用 SpringApplicationContext 注解加载 DAO、服务等。我的 unitils 配置如下所示:

我的休眠配置如下所示:

当我运行测试时,分配给堆的 2GB 最终会填满。Permgen 达到大约 400MB。查看堆转储,charjava.lang.Stringjava.lang.String[]占用了大约 40% 的实例总数。

当我抽查其中一些实例时,GC 根可以追溯到:

  • Spring 上下文管理器(以上下文 XML 提取的形式)
  • SessionFactory(以查询的形式)

我想优化这两件事,我认为它们分别是由以下原因引起的:

  • 每个测试都有一个@SpringApplicationContext 注解
  • 每个测试还使用 unitils @DataSet 注释来加载该测试的数据。

注意,我使用 jdbc:hsqldb:file 从堆中卸载一些数据(即,而不是使用 jdbc:hsqldb:mem)

版本:
hsqldb 1.8.0.7
Spring 3.0.4.RELEASE unitils
3.1

PS有 1500+ 评分的人可以用“unitils”标记这个问题吗?