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

java - DBUnit 的奇怪 DB2 问题

我在运行 DBUnit 测试时遇到了一个奇怪的 DB2 问题。我的 DBUnit 测试是高度定制的,但我认为这不是问题。当我运行测试时,我遇到了失败:

SQLCODE:-1084,SQLSTATE:57019

这转化为

SQL1084C 无法分配共享内存段。

这听起来像是一个奇怪的内存问题,尽管这是一个很奇怪的事情。如果我 ssh 到测试数据库服务器,然后进入 db2 并执行“连接到 MY_DB”,测试开始成功!这似乎与正在报告的假定内存错误无关。

我有 2 个测试,第一个实际上成功了,第二个是失败的。但是,当它获取到数据库服务器的连接以加载我的 xml 数据集时,它在 DBUnit 设置代码中失败。

任何想法可能会发生什么?

0 投票
2 回答
5979 浏览

dbunit - DBUnit Data Export

Does anyone know if dbunit has the power to export specific data from multiple tables at once based on a sql statement, as can be done by using dbunit's QueryDataSet class to export data from a single table based on a sql statement, as can been seen here.

James

0 投票
2 回答
6710 浏览

sql - 在 oracle.sql.TIMESTAMPTZ 和 DbUnit 的标准 JDBC 类之间进行转换

我正在运行 Oracle 10g 并有带有 Type_Name 的列

当膨胀成java类时,它们会变成

但是 DbUnit 无法处理将 Oracle 特定类转换为字符串以写入 XML。我想知道是否有任何简单的方法可以让我将这些 Oracle 特定时间戳(例如,在我的 SELECT 语句中)从这些 Oracle 特定时间戳转换为 java.sql 中的某些内容。

0 投票
3 回答
11839 浏览

java - dbunit 测试用例抛出 NoSuchTableException

我正在尝试修复一个项目的测试套件,该项目是我从另一个程序员那里继承的一些 java 数据库代码。项目本身使用hibernate 和MySQL 作为数据库的东西,但为了测试用例的目的,正在使用dbunit。我可以正确加载和初始化hibernate的会话工厂,但是当我尝试在Eclipse中运行我的测试时,我不断收到异常,即“org.dbunit.dataset.NoSuchTableException:mytablename”。

我知道所有文件都在正确的位置,并且我传递给 dbunit 的实际 XML 文件是可以的(我使用的是 FlatXmlDataSet 类型)。我在数据库测试用例基类中的 setUp() 方法如下所示:

在 CLEAN_INSERT 数据库操作之后,立即抛出异常,抱怨我的 XML 文件中的最后一个表,无论这是哪个表。我已经手动和使用 Eclipse 验证了 DTD 和 XML 模式,甚至到了确保两个文件中表的顺序匹配的地步。我宁愿不将这些文件粘贴到此处(因为它会涉及大量搜索替换),但请相信我,我已经查看了 dbunit 示例并确保语法匹配。

关于什么可能是错误的任何想法?我已经在谷歌上搜索了几个小时,但找不到任何有用的东西。

编辑:我忘记提及的一件事是,当我在抛出的行上放置一个断点时,我可以查看 dataSet 的结构并看到我的所有表以及所有测试数据实际上都在那里。所以至少那部分似乎工作正常。

@Bogdan:嗯……好主意。我将尝试使用常规 INSERT 加载数据。@sleske:也是一个很好的建议。感谢您的提示;希望这将使我走上解决此问题的正确道路。

0 投票
3 回答
27999 浏览

sql - SQL 查询抛出“不在聚合函数或 group by 子句中”异常

我正在为我们的一个项目修复测试套件,该项目正在通过 Hibernate/DBUnit 进行测试。有几个测试用例都从 Hibernate 抛出了类似的异常,看起来像这样:

java.sql.SQLException:不在聚合函数或 group by 子句中:语句中的 org.hsqldb.Expression@109062e [... blah ...]

通过我的谷歌搜索,我怀疑这是由于我们使用了聚合函数 AVG() 引起的,因为它在异常的消息中,并且所有抛出的查询都包含它。但是,我发现了几个指向遇到此错误的人的链接,并且能够通过注释掉“ORDER BY”或“GROUP BY”子句或将 SELECT 子句中的其他列包含在分组中来修复它。我理解为什么这会修复这样的错误消息,但我不确定它是否适用于我的情况,因为我尝试做同样的事情并且没有任何区别。此外,我们有一些测试用例会抛出使用 ORDER/GROUP 的异常,但不是全部。例如:

此查询也会引发相同的异常,即使它不使用 ORDER/GROUP 子句。此外,我将 Hibernate 生成的 HSQL 代码直接剪切/粘贴到 MySQL 查询浏览器中,它运行没有问题。此外,值得指出的是,所有这些代码在我们的生产数据库上都可以正常工作,所以我真的很困惑它为什么会在这里抛出。

其他一些可能有用的信息——我们正在使用一个平面 XML 数据库结构,其中包含一些用于测试用例的虚拟测试数据,以及用于休眠的 MySQL 方言。我们正在使用 dbunit 2.4.3/hibernate 3.2.6。我尝试使用最新的休眠版本 3.3.1,但它的行为相同。

任何指针或提示将不胜感激。

0 投票
3 回答
985 浏览

c++ - 用于 C++ 的 DbUnit?

我们正在 Linux 下使用 C++ 进行开发,并且即将设置自动化测试。我们打算使用像 CppUnit oder CxxTest 这样的测试框架。我们使用 Ant 来构建软件,我们还将使用它来运行测试。

由于某些测试将涉及数据库访问,因此我们正在寻找一种工具或框架来促进在数据库中准备和清理测试数据的任务 - 就像 Java 世界中的 DbUnit(JUnit 扩展)一样。

另一种选择可能是使用实际的 DbUnit - Java VM 可用。利用 DbUnit 的 Ant 任务似乎是最有希望的。欢迎任何相关领域的报告!

0 投票
2 回答
1213 浏览

java - 如何让 dbunit 与 MySQL 枚举数据类型配合使用?

我正在尝试使用dbunit测试我们的一些数据库访问代码,但遇到了问题。我们使用MySQL 5或其他东西作为数据库本身。我将一小组数据导出到FlatXmlDataSet,当我设置测试用例时,它会抛出一个异常,上面写着“第 1 行的列 'FHEIGHT_FLAG' 的数据被截断”。FHEIGHT_FLAG 列定义为

枚举数据插入数据库的方式,如果数据源的真实值不为真,那么该列实际上包含“”(空字符串)。使用数据库的代码只是假设如果从数据库提供的值不是't',那么它一定是假的。我怎样才能做到这一点?我无法修复源数据,所以我必须尝试对测试用例做一些事情。

0 投票
2 回答
1865 浏览

java - DBUnit:没有找到列“MYCOL”目录“MYDB”中的“MYSCHEMA .MYTABLE”,因为名称不完全匹配

我在使用 org.dbunit.database.QueryDataSet 创建数据库导出时遇到问题。当我调用 org.dbunit.dataset.xml.FlatXmlDataSet.write(IDataSet, OutputStream) 时,我得到以下堆栈跟踪:

在研究这个问题时,我看到其他人在二月份遇到了这个问题,并使用 2.4.4 的快照版本修复了它。我正在使用 2.4.4 的常规版本。

有任何想法吗?

0 投票
2 回答
1492 浏览

unit-testing - 为什么我的 DBUnit 测试会消耗这么多内存?

我有一个基于休眠的应用程序,它使用 DBUnit 进行单元测试。我们有一个 XML 测试数据库,它在每个测试的 setUp() 中加载了虚拟数据,并在 tearDown() 期间删除。问题是我不能再在 IDE(在本例中为 Intellij)中运行整个套件,因为经过大约 300 次测试后,堆内存已全部用完。测试从大约 0.3 秒到 30+ 秒执行,直到 JVM 最终放弃并死掉。

当我通过 ant 的 junit 任务运行测试套件时,没有问题,也没有为单个类运行测试套件。但是,我喜欢在检查代码库的大型重构更改之前能够在本地运行整个套件,而不是破坏 CI 服务器上的构建。

我正在使用 -Xmx512m 作为 JVM 的唯一参数运行测试套件,这与我在 CI 服务器上运行任务时传递给 ant 的数量相同。我的 hibernate-test.cfg.xml 看起来像这样:

我们编写了一个类,所有测试类都从该类扩展,看起来像这样:

很明显,这里发生了一些内存泄漏,但我不确定在哪里。我该如何诊断?

0 投票
1 回答
482 浏览

spring - DBUnit:如何仅在失败时刷新?

我正在使用 DBUnit 来测试 Spring/Hibernate 持久性。

我创建了一个抽象测试:

但是每当我运行测试时,它会在每个测试方法之前再次刷新数据库,这很长而且我认为这不是很好。

我怎样才能仅在失败时重新加载/刷新?

PS:代码有多烂?