gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 10:04:44 24 4
gpt4 key购买 nike

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

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

可悲的是,我认为 SpringBoot 不支持“yaml 注入(inject)”,但它确实提供了一个 @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`
}
}

不过,我该怎么做呢?

有什么方法可以连接到 hibernate 并获取为特定方法生成的语句(以及仅针对该方法的语句)?

最佳答案

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

您可以做的是使用 p6spy ( https://github.com/p6spy/p6spy ) JDBC 驱动程序,为每个 YAML 文件运行模拟测试并从 p6spy 日志中获取所有 SQL 语句。

关于java - 将 `@UsingDataSet` 转换为 `@Sql`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55747152/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com