问题标签 [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.
java - 使用springtestdbunit时如何解决外键约束冲突问题?
我有两张表,一张表A的字段引用了表B的字段,我使用注解@DatabaseSetup进行xml文件的导入,我在xml文件的数据集中写了表A和表B的数据。当我运行单元测试时,它说表 A 上的 INSERT 导致违反 key(0) 的外键约束。
如何表达两个表之间的引用关系?
java - DAO 的 save 方法中的单元测试
我编写了一个单元测试来测试 DAO 的保存方法,我确信我的保存方法有效,但是,当我运行我的单元测试时,它遇到了这个错误:
这是我的单元测试代码:
这是我的预期结果:
- - - - - - - - -更新 - - - - - - - - - - - - - - - - -------------
我意识到我不需要添加回滚注释,并且我需要提供所有列信息以进行结果比较,但是,每次我运行单元测试时,INSERT 操作都会使列“id”自动递增,从而产生“id” fireld 将与 xml 文件中的预期结果不匹配,如何忽略比较列“id”?现在错误消息是:
java - 使用 spring-test-dbunit 进行单元测试
我的情况是我有两个表,其中一个表对另一个表有外键约束,并且引用是另一个表的字段“id”,它将随着每次插入自动递增,并且对于这个引用关系不能省略,当我运行单元测试来测试 DAO 的 save(INSERT) 方法,'id' 发生的 compareFailure 不匹配(期望 1 但实际值大于 1 并且每次运行都会增加)。
如何处理这种情况?
spring - Spring TestExecutionListeners 和执行顺序
我使用Spring
+ TestNg
+ Spring Test DBUnit
。
现在我遇到了 Spring Test DBUnit@DatabaseSetups
注释比 TestNG@BeforeMethod
注释更早执行的问题。
我需要更改此行为以让使用 TestNG 注释的方法@BeforeMethod
首先执行,然后才执行带有 @DatabaseSetups 的方法。
现在我有以下测试类:
Spring有什么办法@TestExecutionListeners
可以改变处理的顺序吗?如何配置这些类以便首先执行所有这些@BeforeMethod
?
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
因此我无法在测试配置中引用该班级
java - dataset.xml 中的 DBunit 循环依赖
我正在尝试为单元测试创建数据集。
玩家参考了团队表,反之亦然。因此,当我运行测试时(无论首先创建什么,团队或玩家),它都会返回异常,因为未满足 ForeignKey 要求。
我该如何解决?也许禁用 FK 以进行数据导入或 dataset.xml 允许以某种方式更新字段。
java - org.dbunit.dataset.NoSuchColumnException
运行测试时出现以下错误:
我设置了一个断点org.dbunit.dataset.AbstractTableMetaData#getColumnIndex
并发现了以下内容。在 IntelliJ Idea 中,该方法如下所示:
的值this.getColumns()
不包含任何Column
与Column.columnName
参数匹配的内容columnName
。因此colIndex
变为null
并抛出异常。
看起来 DBUnit 正在错误的表元数据中查找列索引。
我怎样才能解决这个问题?
注意:我从其他人那里继承了这段代码(不是写的)。
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
无法解析注释。我不知道为什么
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 功能,这意味着如果我删除一行,它不会恢复到之前的状态(再次插入)。
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 将列指定为空的正确方法是什么?