2016-09-02 9 views
4

@Sql(executionPhase = ExecutionPhase.BEFORE_TEST_METHOD, scripts="someScript")と注釈を付けた抽象クラスがあります。サブクラスで@Sqlスーパークラスから@Sqlをマージする

私は抽象クラスから継承するテストクラスを持っています。子クラスには@Sql(executionPhase = ExecutionPhase.BEFORE_TEST_METHOD, scripts="someOtherScript")という注釈も付いています。

私は春のブート1.2を実行していたとき、私はそれが期待どおりすべてが機能しました:親クラスのスクリプトは子クラスの前に実行されました。私はスプリングブート1.3にアップグレードしましたが、子クラスの@Sqlは親クラスの@Sqlをオーバーライドし、親クラススクリプトは実行されません。

春のブート1.3ではこれを行う方法が異なりますか?だから親クラスのスクリプトは子クラスのスクリプトの前に実行されますか?

+0

関連コードのどれも変更していないことは絶対に肯定的ですか? –

+0

あなたは私たちにあなたが_before_を使用していたし、あなたが移行_after_ '春-test'の正確なバージョンを教えてくださいことはできますか? –

+0

FYI:https://jira.spring.io/browse/SPR-13068 –

答えて

3

@ SamBrannenのanswerした後、私はScriptUtils.executeメソッドを使用して、子クラスからスクリプトを実行することになりました。

4

春のブート1.3ではこれを行う方法が異なりますか?だから親クラスのスクリプトは子クラスのスクリプトの前に実行されますか?

OK、いくつかの調査作業の後、私はあなたの質問に対する答えを思いついた。

短い答え

いいえ、あなたが何しようとしていることは残念ながらできません。スーパークラスの@Sqlのクラスレベルの宣言と@Sqlのローカルクラスレベルの宣言のマージ設計することで

詳細な回答

は、サポートされていません。ローカル宣言は常ににオーバーライドされました。スーパークラスの宣言です。

したがって、あなたはそれがすべてであなたのために働いていること(あなたがそれを見る方法に応じて、または不運)単にラッキーでした。

唯一の理由は、@Repeatableアノテーション(詳細はSPR-13068を参照)を参照するためのSpringのコアサポートのバグが原因でした。

しかし、このバグは、春のフレームワーク4.2で修正されました、そして春ブーツ1.3は自動的に4.2へのあなたのSpring Frameworkの依存関係をアップグレードしたので、あなたは春のブートアップグレード後に問題に気づいた理由です。

よろしく、

サム(春TestContextフレームワークの著者)

関連する問題