问题标签 [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 投票
1 回答
1321 浏览

java - DBUnit, run insert-select statement

I use DbUnit to load data into a DB for some integration tests. The data is specified in a flat XML file like so:

However in the case of one table, the rows I wish to insert are based on rows already inserted into other tables. The most convenient way for me to achieve this would be by running an insert-select statement, rather than specifying the rows via XML as above. Does DbUnit support loading data via a mixture of insert-select statements and XML in this fashion?

Thanks, Don

0 投票
1 回答
168 浏览

sql - 如何从 Web 界面为用户提供 DBUnit DatabaseOperation 方法的功能?

我目前正在更新一个基于 Java 的 Web 应用程序,它允许数据库开发人员创建用于数据库测试的存储过程回归测试套件。

目前,对于测试设置、执行和清理阶段,为用户提供了文本框,他们可以在其中输入由 isql 命令执行的 SQL 代码。

我想扩展应用程序以使用 DB Unit 的 DatabaseOperation 方法来提供更多设置数据库状态的方法,而不仅仅是 SQL 语句。使用 Db Unit 而不仅仅是 SQL 语句的主要原因是能够在服务器上创建和存储 xml 和 xls 数据集,在那里它们可以与测试用例相关联并用于数据设置。

我的问题是:

如何从 Web 界面为用户提供 DBUnit DatabaseOperation 方法的功能?

我考虑过:

  1. 创建一种简单的编程语言和一个解析器来读取一些涉及 DB 单元方法名称的简单语法,这些方法名称接受一个参数,即 xml 或 xls 数据集的文件位置。我正在考虑允许用户使用 Web 应用程序注册他们需要的文件,该应用程序将对它们进行编目并为每个文件提供一个标识符,该标识符可以作为参数传递给这种简单编程语言中的方法。

  2. 创建一个 XML DTD,它为用户提供了指定操作和参数的能力。如果我采用这种方法,我如何执行从 XML 文档中解析的方法及其参数?

  3. 在数据库中创建一个表,该表存储方法和与编目 DataSet 文件的 FK 关系,但是我认为这不是一个好的解决方案,因为数据输入会很乏味。

谢谢你的帮助。

0 投票
1 回答
8683 浏览

xml - DbUnit 和二进制数据

我使用 DbUnit 对我的 DAO 对象进行单元测试。到目前为止效果很好。

我有一个问题,我有字段 ob 类型byte[],它在数据库中存储为 BLOB。该列不为空。如何在 DbUnit 使用的 XML 数据集文件中指定此列的值?该值可以没有什么花哨的,5个字节就足够了。我想避免为此创建额外的二进制文件。

有什么建议么?

0 投票
3 回答
2344 浏览

maven-2 - 如何在 dbunit-maven-plugin 中处理多个 src 文件

dbunit-maven-plugin 1.0-SNAPSHOT 版本支持在 sources 标签下表达多个 src 文件,你如何在仅支持单个 src 标签的 1.0-beta-3 版本上做同样的事情

0 投票
1 回答
1020 浏览

java - Spring没有初始化bean(dbunit);我错过了什么?

我在使用 Spring 集成设置 Stripes MVC 的教程中遵循了一些指南,并且我正在尝试集成 DBUnit 以在启动时初始化我的数据库,这样我就不必每次都浪费时间手动插入数据。不幸的是,我无法将教程链接为付费电子书。

在我的 web.xml 中,我引用了 Spring

在我的 applicationContext.xml 中,我设置了以下 bean

注意事项:

  1. 数据源的详细信息与我的相同persistence.xml,如果我手动插入数据,它会显示在我的应用程序中,因此连接详细信息应该没问题
  2. 我在DBUnitBootstrapper课堂上设置了断点,但这些断点从未被捕获,这让我相信这个 bean 没有被初始化。
  3. testdata.xml文件存在于正确的位置,我拥有最简单的域对象,具有 ID 和一些String属性
  4. 在 中testdata.xml,如果我将 ID 从更改为1abc我会numberFormatException在控制台输出中得到 a ,所以听起来应用程序正在读取数据文件并尝试插入

我错过了什么明显的东西吗?我还可以做些什么?我在JavaRanch上问过这个问题,但到目前为止我还没有得到太多帮助。这是针对个人学习项目的,因此取得一些进展会很棒:)

0 投票
5 回答
16358 浏览

java - 数据库单元;混淆表/列名区分大小写

启动应用程序时出现此错误

我不太确定我为什么会得到这个,因为我的表/列名称都以大写形式引用(即使消息坚持这不应该是问题)

我的桌子:

我的域实体的片段:

我试图强制 DBUnit 使用的测试日期片段:

我想不出其他可以尝试的方法,删除了表并重新编译了 java 代码,有什么想法吗?

0 投票
2 回答
3052 浏览

java - DbUnit:增量 id 生成问题

我将 DbUnit 与 Unitils 一起使用,这在大多数情况下都非常有效。

今天我发现了一个奇怪的问题。

情况是:

  • 我使用 Hibernate,并使用“增量”生成器获得 id:
  • 我准备了测试数据集,其中最大 id 为 5。
  • 我使用干净插入加载策略。
  • 我有两种测试方法test1test2,每一种都在此表中添加一行。
  • 方法后test1新添加的行的 id=6。
  • 方法后test2新创建的行具有 id=7。

这一切都好,我明白为什么会这样。从维护的角度来看,这是一个问题。如果我在两者之间添加第三个测试方法,test2即使没有任何改变,方法也会突然失败,因为行会得到不同的 id。

无论如何我可以强制 DbUnit 或 Hibernate 在每个测试方法之前计算下一个 id 值吗?

0 投票
1 回答
2516 浏览

java - Hibernate boolean true_false 在 MySql 中产生一个字符...有时?

一段时间以来,我一直在享受 Hibernate 的“yes_no”表示法。我在活动字段上经常使用它,如下所示:

最近我向另一个对象添加了一个名为 processable 的新字段,如下所示:

当我在 MySQL 中编译和休眠构建我的数据库时,active 仍然显示为 char 但可处理的是 int。我错过了什么?我对允许使用多少个 char 布尔值有限制吗?

0 投票
3 回答
1087 浏览

java - 有没有办法阻止 Maven Test 重建数据库?

我最近被要求有效地向我的部门推销单元测试。我无法告诉你这让我有多兴奋,但我确实有一个担忧。我们将 JUnit 与 Spring 和 Maven 一起使用,这意味着每次mvn test调用时,它都会重建数据库。显然,我们不能将它与我们的生产服务器集成——它会杀死有价值的数据。

如何在不告诉 maven 跳过测试的情况下防止重建?

我能想到的最好的办法是分配脚本在测试数据库中运行(添加换行符以提高可读性):

我不禁认为必须有更好的方法。

我特别有兴趣了解是否有一种简单的方法可以告诉 Maven 只在特定类上运行测试而不构建其他任何东西? mvn -Dtest=<test-name> test仍然重建数据库。

=======更新=======

我脸上有点鸡蛋。我没有意识到我在两个地方使用了相同的变量,这意味着 POM 使用“skip.test”变量来重建数据库和运行测试......

0 投票
1 回答
628 浏览

java - 更正了 dbunit 中的表名消息

dbunit 数据已根据模式定义使用小写表名填充。为什么每次都会收到更正的表警告,我为所有数据库(h2,mysql ..)运行脚本