Java 将“@UsingDataSet”转换为“@Sql”`
我正在将一个应用程序从Thorntail迁移到Spring Boot 我们的一些集成测试使用Arquillian及其Java 将“@UsingDataSet”转换为“@Sql”`,java,hibernate,spring-boot,kotlin,jboss-arquillian,Java,Hibernate,Spring Boot,Kotlin,Jboss Arquillian,我正在将一个应用程序从Thorntail迁移到Spring Boot 我们的一些集成测试使用Arquillian及其@UsingDataSet注释,这非常方便,让您可以在yaml中指定数据结构 遗憾的是,我认为SpringBoot不支持“yaml注入”,但它确实提供了一个@Sql注释,该注释期望——出乎意料地——Sql文件 现在我不想在SQL中重写测试数据。这很麻烦,我也不想花几个小时调试SQL,因为我在某个地方出了差错 当然,在理想情况下,我们将完全摆脱yaml/sql文件,选择(比如)jOO
@UsingDataSet
注释,这非常方便,让您可以在yaml中指定数据结构
遗憾的是,我认为SpringBoot不支持“yaml注入”,但它确实提供了一个@Sql
注释,该注释期望——出乎意料地——Sql文件
现在我不想在SQL中重写测试数据。这很麻烦,我也不想花几个小时调试SQL,因为我在某个地方出了差错
当然,在理想情况下,我们将完全摆脱yaml/sql文件,选择(比如)jOOQ,并从代码中填充测试数据库
不过,目前还不确定通过合理的努力是否可行
让我们假设在代码中重写不是一个选项,我们有一个这样的集成测试
@RunWith(Arquillian::class)
@UsingDataSet("foo.yml","bar.yml","baz.yml")
class MyBloodyIT{
}
我想创建一个辅助的“test”类
但是我该怎么做呢
有没有办法挂接到hibernate并获取为特定方法生成的语句(以及仅为该方法生成的语句)?Arquillian与hibernate有什么关系?我认为它使用DBUnit从YAML中为数据库种子 您可以使用p6spy()JDBC驱动程序,对每个YAML文件运行模拟测试,并从p6spy日志中获取所有SQL语句
@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`
}
}