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

java - 使用springtestdbunit时如何解决外键约束冲突问题?

我有两张表,一张表A的字段引用了表B的字段,我使用注解@DatabaseSetup进行xml文件的导入,我在xml文件的数据集中写了表A和表B的数据。当我运行单元测试时,它说表 A 上的 INSERT 导致违反 key(0) 的外键约束。

如何表达两个表之间的引用关系?

0 投票
1 回答
391 浏览

java - DAO 的 save 方法中的单元测试

我编写了一个单元测试来测试 DAO 的保存方法,我确信我的保存方法有效,但是,当我运行我的单元测试时,它遇到了这个错误:

这是我的单元测试代码:

这是我的预期结果:

- - - - - - - - -更新 - - - - - - - - - - - - - - - - -------------

我意识到我不需要添加回滚注释,并且我需要提供所有列信息以进行结果比较,但是,每次我运行单元测试时,INSERT 操作都会使列“id”自动递增,从而产生“id” fireld 将与 xml 文件中的预期结果不匹配,如何忽略比较列“id”?现在错误消息是:

0 投票
1 回答
97 浏览

java - 使用 spring-test-dbunit 进行单元测试

我的情况是我有两个表,其中一个表对另一个表有外键约束,并且引用是另一个表的字段“id”,它将随着每次插入自动递增,并且对于这个引用关系不能省略,当我运行单元测试来测试 DAO 的 save(INSERT) 方法,'id' 发生的 compareFailure 不匹配(期望 1 但实际值​​大于 1 并且每次运行都会增加)。

如何处理这种情况?

0 投票
0 回答
308 浏览

spring - Spring TestExecutionListeners 和执行顺序

我使用Spring+ TestNg+ Spring Test DBUnit

现在我遇到了 Spring Test DBUnit@DatabaseSetups注释比 TestNG@BeforeMethod注释更早执行的问题。

我需要更改此行为以让使用 TestNG 注释的方法@BeforeMethod首先执行,然后才执行带有 @DatabaseSetups 的方法。

现在我有以下测试类:

Spring有什么办法@TestExecutionListeners可以改变处理的顺序吗?如何配置这些类以便首先执行所有这些@BeforeMethod

0 投票
2 回答
1336 浏览

java - Spring Boot DBUnit 测试得到 NoSuchBeanDefinitionException

我正在尝试创建一个简单的 SpringBoot DB 单元存储库测试,但我得到了:

NoSuchBeanDefinitionException:没有可用的“example.ItemRepository”类型的合格 bean:预计至少有 1 个有资格作为自动装配候选者的 bean。依赖注解:{@org.springframework.beans.factory.annotation.Autowired(required=true)}

我的 Gradle 依赖项

我的仓库item-repository/src/main/java/example/ItemRepository

我的存储库测试item-repository/src/test/java/example/ItemRepositoryTest

我的测试配置item-repository/src/main/test/example/configuration/RepositoryTestConfiguration

我需要在其中包含什么才能RepositoryTestConfiguration使其正常工作?

注意:我将我的存储库保存在我的班级的单独模块中,Application因此我无法在测试配置中引用该班级

0 投票
1 回答
189 浏览

java - dataset.xml 中的 DBunit 循环依赖

我正在尝试为单元测试创​​建数据集。

玩家参考了团队表,反之亦然。因此,当我运行测试时(无论首先创建什么,团队或玩家),它都会返回异常,因为未满足 ForeignKey 要求。

我该如何解决?也许禁用 FK 以进行数据导入或 dataset.xml 允许以某种方式更新字段。

0 投票
2 回答
4138 浏览

java - org.dbunit.dataset.NoSuchColumnException

运行测试时出现以下错误:

我设置了一个断点org.dbunit.dataset.AbstractTableMetaData#getColumnIndex并发现了以下内容。在 IntelliJ Idea 中,该方法如下所示:

的值this.getColumns()不包含任何ColumnColumn.columnName参数匹配的内容columnName。因此colIndex变为null并抛出异常。

看起来 DBUnit 正在错误的表元数据中查找列索引。

我怎样才能解决这个问题?

注意:我从其他人那里继承了这段代码(不是写的)。

0 投票
1 回答
671 浏览

spring - spring-test-dbunit 找不到@Test 注解

我已经设置了 spring-test-dbunit 但我得到了以下异常:

testSometing(com.my.package.dbunit.DbUnit) 经过时间:13.013 秒 <<< 错误!java.lang.NoSuchMethodError: org.springframework.core.annotation.AnnotationUtils.findAnnotation(Ljava/lang/reflect/AnnotatedElement;Ljava/lang/Class;)Ljava/lang/annotation/Annotation;

测试类如下所示:

test-application.xml 如下所示:

pom.xml 看起来像这样

似乎存在错误,因为@Test无法解析注释。我不知道为什么

0 投票
1 回答
235 浏览

spring - 使用带有 Spring 的 dbunit 的问题(没有 spring-test-dbunit)

我正在尝试使用 dbunit 来测试我的 DAO。我们在与 spring-test-dbunit 不兼容的版本中使用 Spring。我无法将我的 dao bean 自动装配到我的测试类中,因为那样我就必须使用@RunWith(SpringJUnit4ClassRunner.class)关于一个无参数构造函数的 which。我的课程如下所示:

当然,我得到了一个 NPE,因为找不到我的 dao bean。当我使用时,@RunWith(SpringJUnit4ClassRunner.class)我需要提供一个无参数构造函数并且必须删除我的“dbunit”构造函数。是否有标准方法或解决方法可以在不使用 spring-test-dbunit 的情况下将 dbunit 与 spring 一起使用

编辑

我的班级现在如下所示:

它现在可以编译,但没有 dbunt 功能,这意味着如果我删除一行,它不会恢复到之前的状态(再次插入)。

0 投票
1 回答
617 浏览

dbunit - 如何在 DBUnit 中使用 assertionMode = DEFAULT 检查空列值?

我有一个 2 行 34 列的表。3 列应为空。使用时assertionMode = NON-STRICT,我可以在 after.xml 文件中指定 34-3=31 列,DBUnit 将意识到 3 个缺失的列应该为空。DBUnit 确保表中的 2 行和 34 列与我的 after.xml 中的 2 行和 31 列精确匹配,并且我在 after.xml 中未指定的任何列(3 列)将被假定为空 DBUnit 验证也是。

NON_STRICT 不再起作用,但是,如果我想确保我有 2 行,不多不少(例如,如果表确实有 after.xml 中指定的 2 行,无论是否我是否有更多行)。

所以,我想我应该使用assertionMode = DEFAULT. 当我这样做时,我得到的错误类似于“预期的列是 34,但在表中找到 31”。它只找到了 31,因为我只在 after.xml 中指定了 31。其他 3 个为空,所以我将它们排除在每个 DBUnit 文档的 after.xml 之外。DEFAULT 似乎使 DBUnit 期望在我的 after.xml 中指定 34 列,无论它们是否为空,我是否遗漏了什么?

我尝试了迂回方法,例如指定一个查询来获取 31 列而不是 34 列(3 列为空),并使用该查询的结果与我的 after.xml 进行比较。我也刚刚计算了行数并确保我有 2 行。但那些似乎是迂回的方法。

有没有办法在 DBUnit 中将列指定为空,而不是将它们留在我的 after.xml 中,因为 DEFAULT 似乎不喜欢这样?

在 DBUnit 中使用 assertionMode = DEFAULT 将列指定为空的正确方法是什么?