【发布时间】:2019-09-08 20:34:43
【问题描述】:
我正在将应用程序从 Thorntail 迁移到 Spring Boot。
我们的一些集成测试正在使用 Arquillian 及其 @UsingDataSet 注释,这 - 非常方便 - 允许您在 yaml 中指定数据结构。
遗憾的是,我认为 SpringBoot 不支持“yaml-injections”,但它确实提供了一个 @Sql 注释,它期望 -- 惊喜 -- sql 文件。
现在我不想用 SQL 重写测试数据。这很麻烦,而且我花几个小时调试 SQL 的愿望为零,因为我在某个地方滑倒了。
当然,理想情况下,我们会完全摆脱 yaml/sql 文件并选择 jOOQ 并从代码中填充我们的测试数据库。
不过,尚不确定这是否可以通过合理的努力实现。
让我们假设重写代码不是一种选择,我们有一个像这样的集成测试
@RunWith(Arquillian::class)
@UsingDataSet("foo.yml","bar.yml","baz.yml")
class MyBloodyIT{
}
我想创建一个辅助“测试”类
@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`
}
}
但是,我该如何做呢?
有什么方法可以连接到休眠状态并获取为特定方法生成的语句(以及仅针对该方法的语句)?
【问题讨论】:
标签: java hibernate spring-boot kotlin jboss-arquillian