将`@ UsingDataSet`转换为`@Sql`

问题描述 投票:2回答:1

我正在将应用程序从Thorntail迁移到Spring Boot。

我们的一些集成测试使用Arquillian及其@UsingDataSet注释,非常方便 - 允许您在yaml中指定数据结构。

遗憾的是,我不认为Spring Boot支持“yaml-injections”,但它确实提供了一个qazxsw poi注释,期望--smaprise-sql文件。

现在我不想在SQL中重写测试数据。这很麻烦,我不想花几个小时调试SQL,因为我在某个地方滑倒了。

理想情况下,当然,我们将完全摆脱yaml / sql文件并选择jOOQ并从代码中填充我们的测试数据库。

但是不确定这是否可以通过合理的努力来实现。

让我们假设代码中的重写不是一个选项,我们有一个像这样的集成测试

@Sql

我想创建一个辅助“测试”类

@RunWith(Arquillian::class)
@UsingDataSet("foo.yml","bar.yml","baz.yml")
class MyBloodyIT{
}

但是我怎么做呢?

有什么方法可以挂钩到hibernate并获取为特定方法生成的语句(以及仅用于那个方法的语句)?

java hibernate spring-boot kotlin jboss-arquillian
1个回答
1
投票

Arquillian与Hibernate有什么关系?我认为它使用DBUnit从YAML中为数据库设定种子。

你可以做的是使用p6spy(@RunWith(Arquillian::class) class MyBloodySQLDumpIT{ @Test @UsingDataSet("foo.yml") fun dumpFoo(){ // dump hibernate-generated SQL statements to `foo.sql` } @Test @UsingDataSet("bar.yml") fun dumpFoo(){ // dump hibernate-generated SQL statements to `bar.sql` } @Test @UsingDataSet("baz.yml") fun dumpFoo(){ // dump hibernate-generated SQL statements to `baz.sql` } } )JDBC驱动程序,为每个YAML文件运行模拟测试,并从p6spy日志中获取所有SQL语句。

© www.soinside.com 2019 - 2024. All rights reserved.