栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何在@Before方法之前执行@Sql

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何在@Before方法之前执行@Sql

默认情况下,通过

@Sql
执行的任何SQL脚本将在执行任何方法之前执行@Before。因此,你遇到的行为是正确的,但是你可以通过中的
executionPhase
属性更改执行阶段@Sql(请参见下面的示例)。

如果要执行多个脚本,也可以通过来执行@Sql。

所以,如果你有一个清理脚本命名

clean-parametro.sql
从删除PARAMETRO表,你可以注释类似下面的测试方法(而不是调用
JdbcTestUtils.deleteFromTables()
你的
@Before
方法)。

@Test@Sql({"dml-parametro.sql", "clean-parametro.sql"})public void test() {  }

当然,如果

dml-parametro.sql
将值插入
PARAMETRO
表中,则立即删除清理脚本中的这些值可能没有意义。

请注意,

@Sql
@SqlConfig
为脚本执行提供了多个配置级别。

例如,如果要在测试之前创建表并在测试之后进行清理,则可以在Java 8上执行以下操作:

@Test@Sql("create-tables.sql")@Sql(scripts = "clean-up.sql", executionPhase = AFTER_TEST_METHOD)public void test() {  }

@SqlGroup
用作Java 6或Java 7上的容器:

@Test@SqlGroup({    @Sql("create-tables.sql"),    @Sql(scripts = "clean-up.sql", executionPhase = AFTER_TEST_METHOD)})public void test() {  }

如果测试通过,

@Transactional
并且你想要清除已提交的数据库状态,则可以指示Spring在新事务中执行清除SQL脚本,如下所示:

@Test@Sql("insert-test-data.sql")@Sql(  scripts = "clean-up.sql",  executionPhase = AFTER_TEST_METHOD,  config = @SqlConfig(transactionMode = ISOLATED))public void test() {  }

我希望这可以为你澄清一切!

Cheers,

Sam (author of the Spring TestContext framework)

笔记:

  • AFTER_TEST_METHOD
    是从静态导入的
    ExecutionPhase
  • ISOLATED
    是从静态导入的
    TransactionMode


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/395234.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号