java – 将超类中的@Sql与子类中的@Sql合并

我有一个用@Sql注释的抽象类(executionPhase = ExecutionPhase.BEFORE_TEST_METHOD,scripts =“someScript”).我有一个继承自抽象类的测试类.子类也使用@Sql注释(executionPhase = ExecutionPhase.BEFORE_TEST_METH...

我有一个用@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有不同的方法吗?那么父类脚本是在子类脚本之前运行的吗?

解决方法:

With spring boot 1.3 is there a different way of doing this? So that parent class scripts are run before child class scripts?

好的,经过一些调查工作,我已经找到了你的问题的答案.

简答

不,不幸的是,你想要做的事情是不可能的.

详细解答

通过设计,从未支持将@Sql的本地类级声明与超类上的@Sql的类级声明合并.本地声明总是旨在覆盖超类的声明.

因此,你只是幸运(或不幸,取决于你如何看待它)它对你有用.

它曾经为你工作的唯一原因是由于Spring核心支持查找@Repeatable注释的错误(详见SPR-13068).

但是,这个错误在Spring Framework 4.2中已得到修复,并且由于Spring Boot 1.3自动将Spring Framework依赖项升级到4.2,这就是为什么你在Spring Boot升级后注意到这个问题的原因.

问候,

Sam(Spring TestContext Framework的作者)

本文标题为:java – 将超类中的@Sql与子类中的@Sql合并

基础教程推荐