تجاوز سياق السياق وتكوين السياق من التعليق التوضيحي التلوي
-
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
) على نفس الفئة.إذا قمت بذلك ، ستجد أن الربيع لا يجد سوى واحدة من تلك الإعلانات.
ومع ذلك ، إذا قمت بإدخال فئة أساسية يمكنك تحقيق هدفك (وإن كان ذلك مع شرط تمديد تلك الفئة الأساسية):
@BaseSpringTest
public abstract class AbstractBaseTests extends AbstractTestNGSpringContextTests {
// ...
}
@ContextConfiguration(locations = {"/web/WEB-INF/spring-extension.xml" }, name = "parent")
public class MyTest extends AbstractBaseTests {
// ...
}
وبطبيعة الحال ، إذا كنت تريد الذهاب الطريق 'الطبقة الأساسية' ، والعرف تتألف الشرح ربما ليس مفيدا لك.
التحيات,
سام (مؤلف إطار الربيع تيستكونتيكست)