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

unit-testing - DbUnit如何防范多个测试同时运行?

我正在为一个项目开发一个测试环境,并且正在研究使用 DbUnit.NET 来进行大量的数据库交互测试。不过,我确实有一个非常大的问题:

我们正在针对 Oracle 运行,并且为每个开发人员设置单独的测试数据库实例确实不可行(特别是因为我们只有 1 个已经时间紧迫的 DBA)。这意味着所有开发人员和持续集成服务器都需要使用相同的数据库模式。

那么,关于这个问题:有没有一种好方法可以防止超过 1 人同时进行测试?很容易在 db 表中放置一条记录以指示测试正在运行,然后在测试完成后将其删除,但是 NUnit 没有任何方法可以在测试会话开始和结束时运行某些东西。

还有其他想法吗?似乎这应该是一个非常普遍的问题......或者每个人实际上是否为每个可能运行测试的开发人员/测试人员运行单独的数据库实例?

0 投票
2 回答
2156 浏览

java - dbUnit 数据类型

我正在使用 dBUnit 并试图用实际的 DB 数据集断言我的预定义 FlatXmlDataSet 的一行。问题是当数据来自 FlatXmlDataSet 时,我的验证码字段的 getValue 返回一个字符串,而当它来自实际的实时数据库时,它返回一个整数。对于任何不是字符串的数据类型都是如此。我可以写一些东西在比较之前将所有内容转换为字符串,但是有更好的方法吗?

我的代码:

... (再向下)

这是我啜饮的 test.xml:

0 投票
3 回答
401 浏览

java - 管理静态数据

我正在寻找一种Java(或Groovy)解决方案来管理静态数据,即不经常更改的表中的数据,例如国家列表。

我想将国家/地区列表保存在文本文件中,并在服务器启动时自动更新表格。我不能简单地删除所有表,然后在文本文件中重新插入数据,因为这会违反键约束。

DbUnit 是一个支持将数据从 XML 文件加载到 DB 的库。它有一个刷新操作几乎可以满足我的需要。这将插入文件中但不在数据库中的任何行,更新数据库中也在文件中的任何行,但它不会删除数据库中但不在文件中的任何行。

有没有人找到解决这个问题的好方法?

谢谢,唐

0 投票
1 回答
10411 浏览

java - DBUnit 和 SQL Server 关闭套接字

我一直在同一个地方使用 DBUnit 得到这个异常:

等等

尝试从表中读取列元数据时会发生这种情况。执行此操作的代码如下所示:

连接是一个 MsSqlConnection 实例。起初我认为这是一个网络问题,但该理论存在两个问题。首先运行测试的服务器和数据库都是同一个xen服务器上的虚拟机,所以没有真实的网络。第二,虽然问题不一致,但每次都发生在同一个地方。有超过 100 个数据库测试,但同样的一个是失败的(当它失败时)。

有没有人遇到过类似的问题?有什么见解吗?

0 投票
3 回答
2971 浏览

java - 更改数据库模式和单元测试

     在我们开始之前,我知道很少有人认为命中数据库的测试不是“单元测试”。也许“集成测试”会是一个更好的名字。无论哪种方式,开发人员都会对数据库进行测试。

为了启用单元测试,我有一个开发人员本地数据库,我在每次测试开始时使用dbUnit     清除并填充一组已知的数据。这一切都很好,直到测试使用的表以某种方式发生变化,我必须手动更新所有 XML 数据集。这是一种痛苦。我认为其他人一定遇到了同样的问题,并希望找到一个很好的解决方案。那么对于需要填充数据库的测试,您使用什么以及如何处理表定义的更改?(虽然我使用 Java,但我对使用不同技术的解决方案持开放态度。)

编辑: 澄清一点。我有一个人为的测试,例如:

在那我有两个表 - tRevision 和 tIssue。加载的修订版使用来自 tIssue 的少量数据。后来 tIssue 获得了一个修订版不关心的新字段。由于新字段为“非空”并且没有合理的默认值,因此该测试将失败,因为 tIssue.xml 将无效。

通过像这样的小改动,编辑 tIssue 并不难。但是,当 XML 文件的数量随着每个流程开始激增时,它就变成了大量的工作。

干杯,
    mlk

0 投票
2 回答
1793 浏览

java - Java:DBunitils + Spring:不同的休眠方言

我目前使用 spring 进行依赖注入。Hibernate 使用 postgres 方言进行正常运行,但我想将 HSQL 用于 DBUnitils 数据库测试。

我的Spring-Configuration包含以下内容:

这些字段被 Maven 资源过滤所取代。

DBUnitils 的 Spring-Configruation 包含以下内容:

因此使用 UnitilsDataSource 覆盖我的运行配置中的数据源。

问题:我无法使用 Postgres-Dialect 对 HSQL-Test-Database 运行测试,因为某些命令不起作用。 我想到的唯一解决方案:在 maven 中切换资源过滤器,但我必须手动执行此操作(通过在每个 maven 调用上证明“-P TEST”)。那么是否有可能覆盖hibernate.dialect?

谢谢!

0 投票
1 回答
3479 浏览

phpunit - PHPUnit 数据库扩展 - 如何有一个空的数据集?

我想创建一个空的测试表。使用 digitalsandwich 中的示例,我想要类似的东西:

我应该使用与 createFlatXMLDataSet() 不同的方法吗?或者???

0 投票
3 回答
20271 浏览

java - 如何在不遇到 NoSuchTableException 的情况下使用纯 JDBC 和 HSQLDB 测试 DBUnit?

我正在尝试将 DBUnit 与普通的 JDBC 和 HSQLDB 一起使用,但不能完全让它工作——即使我之前已经将 DBUnit 与 Hibernate 一起使用并取得了巨大成功。这是代码:

这是有问题的 dataset.xml:

这个测试给了我一个 NoSuchTableException:

如果我删除 databaseTester.onSetup() 行,我会得到一个 SQLException:

数据集本身正在工作,因为我可以像应该的那样访问它:

我在这里想念什么?

编辑:正如@mlk 指出的那样,DBUnit 不会创建表。如果我在添加数据集之前插入以下内容,一切都会顺利进行:

I posted a followup question as Is there any way for DBUnit to automatically create tables from a dataset or dtd?

0 投票
5 回答
25073 浏览

java - DBUnit 有没有办法自动创建表?

我刚刚意识到 DBUnit 不会自行创建表(请参阅如何使用纯 JDBC 和 HSQLDB 测试 DBUnit 而不会遇到 NoSuchTableException?)。

DBUnit 有什么方法可以自动从数据集或 dtd 创建表?

编辑: 对于像 HSQLDB 这样的内存数据库的简单测试,可以使用一种粗略的方法来自动创建表:

0 投票
2 回答
3188 浏览

java - dbUnit 的问题:java.sql.SQLException: Closed Statement

我对 dbUnit 有一个奇怪的问题。我的项目使用 dbUnit 2.4.4、java 1.6、Spring(作为 db 连接池)、Oracle 9 进行了大约 50 个单元测试。对于其中一些(当我运行整套测试时)我得到这样的异常:

importToDb 方法通过 dbUnit 的 DatabaseOperation.REFRESH.execute 方法将测试数据从 XML 文件加载到数据库,并用于所有测试。如果我单独运行这些有问题的测试,它们就没有问题。你有什么想法?谢谢!