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

hibernate - 在 HSQLDB 上使用 Spring DBUnit 进行休眠和 Spring 数据 - 由于外键约束而无法删除

我正在使用 Hibernate 和 Spring Data 来建模一个非常简单的域:

然后,我在数据服务中有一个“updateUser”方法,该方法按其命名。这个想法是将团队添加到用户,将使用此方法并且级联将导致团队被持久化在数据库中。

然后,我使用 HSQLDB 数据库和 Spring DBUnit 对该方法进行单元测试,以设置初始数据库内容和预期的数据库内容:

初始数据库内容配置

预期的数据库内容配置

然后我有两个测试:一个测试更新成功;一种测试尚未在系统中的用户无法更新的方法。

成功测试

“用户不存在”测试

“成功”测试工作正常。但是,“失败案例”测试错误并出现以下错误:

似乎暗示它不能拆除在“成功”测试中添加的测试数据(我已经在成功测试中添加了@Ignore 注释并且失败测试通过)。我的问题是为什么?我在 @OneToMany 关系上的级联设置为 ALL,因此应删除作为用户-团队关系的一部分保存的所有实体。

有没有人有任何想法?

0 投票
3 回答
2015 浏览

spring - Spring / DbUnit 在一次测试后关闭连接

因此,我们需要使用 Oracle 数据库为 Java 配置的 Spring Application (3.2.3)编写集成测试。Spring-test-DbUnit填充了一个单独的模式,第一个测试运行没有任何问题。以下所有其他测试,无论它们是否属于同一类,都由于连接关闭而失败:

这是我们的数据源:

这是一个示例集成测试类:

这可能是 Spring 的数据库连接行为在提交/回滚事务后关闭连接的问题吗?如果是,我该如何解决这个问题?我最后一次尝试是在类/方法基础上创建事务,但没有成功。

先感谢您。

0 投票
1 回答
556 浏览

java - 使用 Spring 测试 DBUnit @DatabaseSetup 注解时是否需要 JPA 注解?

我正在玩 Spring 测试 dbunit 库,我有一个关于数据集的问题。我有一个POJO代表我想在我的测试中保存到内存数据库中的实体。这POJO不是由任何 JPA 注释注释的@Entity@Table或者@Column,是否可以在带有注释的 XML 数据集文件中使用此类@DatabaseSetup

代码示例:XML 数据集文件:

和人 POJO 类:

现在我收到以下错误:

org.dbunit.dataset.NoSuchTableException:人

我有另一个带有 JPA 注释的 POJO 类,它通过@DatabaseSetup注释处理而没有任何错误。我正在尝试在单个测试中使用两个 POJO。Spring 测试 DBUnit 库是否需要 JPA 注释才能在测试之前设置我的数据库?

0 投票
2 回答
2488 浏览

spring - 带有手动事务管理的 Spring 集成测试

我已经阅读了很多关于使用 Spring 进行集成测试的帖子和主题,但没有什么是令人满意或有帮助的。

我们使用带有 Hibernate、Spring Data 和 Oracle 数据库的 Spring 3.2.3。对于测试,我们还使用 DbUnit 和 Spring-test-dbunit。在生产代码中,事务由控制器启动,服务本身对事务一无所知。

所以,这是我的测试:

我发现,如果我用@Transactional(propagation=Propagation.REQUIRES_NEW)测试注释 NewsService 工作正常,但它与生产模式不同。@Transactional(propagation=Propagation.REQUIRED)是不够的,因为 DbUnit-Spring-test 自己打开一个事务,而后者断言失败,因为事务尚未提交。如何在执行最后一个断言之前提交事务?

0 投票
1 回答
454 浏览

spring - 父类中的 DBUnit NoSuchColumnException

所以我收到了这个错误:

在 Spring JUnit 测试的上下文中尝试使用 DbUnit 填充 H2 DB 时。H2 DB 的 DDL 是从 JPA 注释类创建的。但是,该列确实存在,它位于由核心类扩展的抽象类中。

让我解释。核心 JPA 类如下所示:

父类如下所示:

我正在启动这样的测试:

我的 Toyota.xml 数据文件如下所示:

有什么想法吗?

0 投票
8 回答
61452 浏览

spring - 在 Spring 中配置特定的内存数据库以用于测试目的

如何配置我的 Spring Boot 应用程序,以便在运行单元测试时它将使用内存数据库,例如 H2/HSQL,但是当我运行 Spring Boot 应用程序时,它将使用生产数据库 [Postgre/MySQL]?

0 投票
2 回答
1509 浏览

spring - spring+hibernate 测试后清除数据库

我正在尝试测试将实体类添加到数据库中。但目前我只能做一次(((第二次启动测试,它失败了(((另外我注意到测试完成后数据没有被清除(((所以下一个测试只是崩溃,因为之前的数据仍然存在。代码和消息跟踪如下:

例外:

我尝试使用所有建议的 inet 解决方案(@DirtiesContext、空数据集文件等)清理数据库 - 它们在这里不起作用(((所以我的任务是每次启动它时都让这个测试工作。有什么想法吗?

0 投票
0 回答
206 浏览

java - DBUnit bytea 插入

我正在使用 Spring Oauth,并且正在尝试将测试数据插入 oauth_client_token 表(客户端 Spring Oauth 2)。当我查看 Spring Oauth's 的字节码时JdbcClientTokenService.saveAccessToken,我看到了这个:

我关心的new SqlLobValue(SerializationUtils.serialize(accessToken))是生成对象字节的这一部分。我想要一种方法让 DBUnit 在集成测试期间插入所有这些数据。我之前做的是生成一些随机字符串的base64字节字符串,然后让DBUnit插入它。但是,当JdbcClientTokenService.getAccessToken调用对字节调用 SerializationUtils.deserialize 时,我得到不正确的标头异常。我相信会发生这种情况,因为 base64 生成的输出与 SerializationUtils.serialize 不同。让我知道是否有办法使用 DBUnit 插入正确的数据。

谢谢

0 投票
1 回答
3238 浏览

java - Spring测试+DBUnit无法加载DataSet

我正在尝试在我的 Spring Boot 应用程序中编写集成测试。我在正确设置设置时遇到问题。抛出以下异常:

我已经尝试过的事情:

  1. 更改 sampleData.xml 文件的名称。
  2. 使用 value="" 表示法。
  3. 使用类路径:在文件名之前。
  4. 在文件名前使用附加的“/”。

sampleData.xml 与我的测试类位于同一目录中。我想我错过了一些愚蠢的东西。

样本数据.xml:

BenutzerVerwaltungsIntegrationsTest:

示例应用上下文:

0 投票
1 回答
418 浏览

java - 使用 Spring 编写数据库单元测试:java.lang.IllegalStateException: Failed to load ApplicationContext

我一直在尝试让 Spring DBUnit 测试来测试我的 dao 功能。然而,经过这么多尝试,现在我被这个奇怪的说法卡住了,无法加载应用程序上下文:

我要测试的道:

我正在使用的数据集文件:dataset.xml

测试的应用程序上下文:applicationContext-test.xml

实际测试类:

但是,当我运行它时,我得到这个奇怪的异常,说无法加载应用程序上下文。