META-AnnotationからContexThierarchyとContextConfigurationを上書きします
-
23-12-2019 - |
質問
メタ注釈を使用してテストクラスを持っています:
@WebAppConfiguration
@ContextHierarchy({
@ContextConfiguration(locations = {"/web/WEB-INF/spring.xml" }, name = "parent"),
@ContextConfiguration("/web/WEB-INF/spring-servlet.xml")
})
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface BaseSpringTest {
}
.
しかし、テストクラス自体から階層の要素を上書きすることができるようにすることができます。例えば:
@BaseSpringTest
@ContextConfiguration(locations = {"/web/WEB-INF/spring-extension.xml" }, name = "parent")
public class MyTest extends AbstractTestNGSpringContextTests {
...
}
.
これまでのところ私たちのために働いていません...これを起こすための場所にメカニズムはありますか? https://jira.spring.io/browse/spr-11038 を見つけました私はそれがこのタイプの状況に対する修正であるとは思わない。
ありがとう!
解決
これを起こすための任意のメカニズムはありますか?
いいえ、この構成のスタイルをサポートするそのようなメカニズムはありません。
カスタム合成注釈は、実際の注釈の代わりに、実際の注釈と組み合わせてを使用することができます。これは、コアスプリングフレームワークにわたって当てはまります(おそらく@Profile
と@Conditional
を除く)。
つまり、@ContextConfiguration
と同じクラスの@ContextConfiguration
(例えば、@BaseSpringTest
)でメタ付けされている別の注釈を宣言することはできません。あなたがするならば、あなたはそれらの宣言のうちの1つだけを見つけるだけであることがわかります。
しかし、あなたがあなたの目標を達成することができる基本クラスを紹介することができれば(その基本クラスを拡張するための要件にあるとしています):
@BaseSpringTest
public abstract class AbstractBaseTests extends AbstractTestNGSpringContextTests {
// ...
}
@ContextConfiguration(locations = {"/web/WEB-INF/spring-extension.xml" }, name = "parent")
public class MyTest extends AbstractBaseTests {
// ...
}
.
もちろん、「基本クラス」ルートを進んでいる場合、カスタム構成注釈はおそらくあなたにとって有用ではありません。
wantes、
SAM(Spring TestContextフレームワークの作成)
所属していません StackOverflow