gpt4 book ai didi

spring - 使用注释@Sql,是否可以在方法级别之前执行类级别的脚本?

转载 作者:行者123 更新时间:2023-12-02 01:34:56 27 4
gpt4 key购买 nike

我想在每个测试方法之前执行两个脚本,但我也想定义一些脚本在特定方法之前执行。使用Spring框架和@Sql注解,可以吗?

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("/WEB-INF/application-context.xml")
@DirtiesContext(classMode = ClassMode.BEFORE_EACH_TEST_METHOD)
@Sql({ "/database/drop_schema.sql", "/database/create_schema.sql" })
public class CentralServiceTestCase {

// I want to run "drop_schema.sql", "create_schema.sql"
// and "basic_data.sql" here
@Test
@Sql({ "/database/basic_data.sql" })
public void processActionWithSuccess() {

}

// I want to run only "drop_schema.sql" and "create_schema.sql" here
@Test
public void anotherTestMethod() {

}

}

运行此代码执行basic_data.sql。如何解决这个问题?

我是否必须从类中删除@Sql注释,并使用/database/drop_schema.sql/database/create_schema为每个方法复制它.sql 已定义?

最佳答案

更新:现在可以通过新的 @SqlMergeMode 注释在即将发布的 Spring Framework 5.2 版本中实现这一点(请参阅 reference manual 了解<强>5.2.0.RC1)。

<小时/>

@Sql 的 Javadoc 第 2 段明确指出:

Method-level declarations override class-level declarations.

这也记录在 Executing SQL scripts declaratively with @Sql 中引用手册的部分。

因此,不,不幸的是,如果 @Sql 也在方法级别定义,则不可能执行在类级别通过 @Sql 声明的脚本。

如果您希望 Spring 支持此类组合,请create a JIRA issue请求此功能并选择测试组件

谢谢!

Sam(Spring TestContext 框架的作者)

关于spring - 使用注释@Sql,是否可以在方法级别之前执行类级别的脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32871817/

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