问题标签 [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.
database - 在 Maven/Junit/DBUnit 项目的集成测试之前/之后创建/删除数据库的最佳方法?
我见过一些人使用 maven-sql-plugin 来做到这一点。但这似乎是一个更适合 DBUnit 的任务......也许在整个测试套件的开头。
这里的最佳做法是什么?
transactions - 使用 Spring Test 自动回滚 DAO 集成测试是一种好习惯吗?
如果我用 @Transactional 注释我的 DAO 集成测试方法,Spring Test 将在每个测试方法完成后愉快地回滚对数据库的任何更改。这些看起来非常方便,因为我可以使用 @BeforeClass 方法加载测试数据一次,所有清理工作都为我处理。
但我质疑这是否是一种好的做法,因为我会错过发现提交期间可能发生的故障的机会。在 DAO 的 dbunit 集成测试中使用事务来帮助清理的共识是什么?
junit - 如何使用 Spring Test 为每个案例加载一次 DBUnit 测试数据
Spring Test 有助于回滚测试方法中对数据库所做的任何更改。这意味着无需在每个测试方法之前花时间删除/重新加载测试数据。
但是如果你使用 @BeforeClass Junit 注释,那么这会强制数据加载器是静态的。这里探讨的一个问题: 为什么 jUnit 的 fixtureSetup 必须是静态的?
如果数据初始化方法是静态的,那么数据连接方法和数据源也必须是静态的......并且不断地......强制一切都是静态的......这是行不通的。在这一点上,我问 - 当您必须为每个测试删除/重新加载测试数据时,Spring Test 回滚更改的能力有什么好处??!?!
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 是从当前工作目录中解析的”。
有什么好的方法来解决这个问题?
java - 关于DBUNIT和Junit的问题
我有一个用 PL/SQL 编写的数据库进程,我想使用 DBUNIT 进行测试。pl/sql 程序处理来自一个表的数据并将新数据生成到一个新表中。在某些情况下,它还会更新原始表上的字段。
我对如何使用 dbunit 进行测试感到有些困惑。阅读它,看起来我必须在 xml 文件中指定数据,但我无法弄清楚如何构造 xml 文件。考虑一下我想我需要以下数据文件
- 包含 tableA 数据的 xml 文件
- 包含 tableB 数据的 xml 文件
- 包含更新表 A 数据的 xml 文件
工作流程是这样的
- 加载表A
- pl/sql 进程将处理数据并在 tableB 中生成结果并更新 tableA 中的一些字段
- 为 tableB 加载 xml 文件并比较结果。
我对 dbunit 如何提供帮助感到有些困惑。例如
- xml 数据是否加载到内存中,然后与 TableB 中的数据进行比较?
- 我将如何将更新与 tableA 进行比较?
如果您能提出更好的替代方案或方法,也请告诉我。
谢谢
java - 使用带有 Hibernate 和 DbUnit 的 AbstractTransactionalDataSourceSpringContextTests - 未找到插入的数据
总之,我正在尝试为使用 Hibernate 的 Dao 编写单元测试。我也在使用 Spring,所以我尝试扩展 AbstractTransactionalDataSourceSpringContextTests 并使用 DBUnit 在 onSetUpInTransaction 方法中的每个测试之前将数据插入数据库。
从我的日志中,我可以看到 DbUnit 能够成功地将数据插入 onSetUpInTransaction 就好了。但是,当我运行使用 Dao(以及因此使用 Hibernate)的测试方法来尝试访问该数据(testGetPersonById2)时,找不到数据,即使所有这些都应该发生在同一个事务中。在测试方法完成运行(失败)后,我看到来自 AbstractTransactionalDataSourceSpringContextTests 的日志语句表明事务确实得到了正确回滚。
似乎 onSetUpInTransaction 和 Hibernate 会话必须使用不同的事务,但我不知道为什么。有没有人有这样的例子?关于我缺少什么的建议?
这是我到目前为止所得到的:
更新:这是我的弹簧配置:
unit-testing - 在连续测试中加载数据集失败并出现“关闭会话”
我有 2 个测试类,都用unitils注释进行了注释
目标数据库是一个HSQLDB,它在一个带有testng注释的抽象超类方法中启动:
当测试运行程序(Maven Surefire)到达第二次测试时,数据库已正确实例化(我可以在日志中看到),但unitils或实际上dbunit无法加载数据集。
我很困惑为什么dbunit设法在第一个测试类中连接到HSQLDB,而在第二个测试类中却没有。
有人有线索吗?
谢谢!J。
java - dbunit 断言没有正确抛出失败
以下是一个测试org.dbunit.Assertion.assertEquals(ITable a, ITable b)工作的测试用例
这里两个 DefaultTable 的值都不匹配,但 JUnit 仍然没有失败上述测试用例。我从 Eclipse 运行它,它在测试用例下导致 0 次错误和 0 次失败和无根测试,如下所示,
我调试了 DBUnit API,它根据需要抛出数据不匹配异常,但最后从 SpringJUnit4ClassRunner 返回时,它不会作为测试用例失败抛出。
我想我在这里缺少一些东西。请纠正我或让我知道解决方案。预先感谢。
php - PHPUnit 和 DBUnit - 入门
有没有人有关于如何开始将 DBUnit 层添加到我的 PHPUNIt 测试的良好工作教程或书籍的链接?
我试过按照代码
XML 是通过mysqldump命令创建的。我很乐意使用 CSV,甚至是内存中的数组(不管怎样)
不幸的是,我似乎无法启动这个系统。
hibernate - OutOfMemoryError:尝试使用 HSQLDB、DBUnit、unitils、Hibernate、Spring 优化 Maven 多模块单元测试
我有一个包含数千个测试的大型多模块 Maven 项目。每个测试使用 SpringApplicationContext 注解加载 DAO、服务等。我的 unitils 配置如下所示:
我的休眠配置如下所示:
当我运行测试时,分配给堆的 2GB 最终会填满。Permgen 达到大约 400MB。查看堆转储,char、java.lang.String和java.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”标记这个问题吗?