我有一个带有注释的抽象类@Sql(executionPhase = ExecutionPhase.BEFORE_TEST_METHOD, scripts="someScript")
.
我有一个继承自抽象类的测试类。子类也注释为@Sql(executionPhase = ExecutionPhase.BEFORE_TEST_METHOD, scripts="someOtherScript")
.
当我运行 spring boot 1.2 时,一切都按我的预期进行:父类的脚本在子类之前运行。我升级到 Spring Boot 1.3 现在,子类的@Sql
覆盖父类的@Sql
并且父类脚本永远不会运行。
Spring Boot 1.3 有不同的方法吗?那么父类脚本在子类脚本之前运行吗?
Spring Boot 1.3 有不同的方法吗?那么父类脚本在子类脚本之前运行吗?
好的,经过一些调查工作,我已经找到了你问题的答案。
简答
不,不幸的是,您尝试做的事情是不可能的。
详细解答
根据设计,合并本地类级别声明@Sql
具有类级别声明@Sql
从未支持超类。本地声明的目的始终是override超类的声明。
因此,你只是幸运(或不幸,取决于你如何看待它)它对你有用。
它对你有用的唯一原因是 Spring 核心支持查找中的一个错误@Repeatable
注释(参见SPR-13068 https://jira.spring.io/browse/SPR-13068了解详情)。
然而,这个错误在 Spring Framework 4.2 中得到了修复,并且由于 Spring Boot 1.3 自动将您的 Spring Framework 依赖项升级到 4.2,这就是您在 Spring Boot 升级后注意到该问题的原因。
Regards,
Sam (Spring TestContext 框架的作者)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)