تجاوز سياق السياق وتكوين السياق من التعليق التوضيحي التلوي

StackOverflow https://stackoverflow.com//questions/25065849

سؤال

لدينا فصول اختبار باستخدام التعليق التوضيحي التلوي:

@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 {
    // ...
}

وبطبيعة الحال ، إذا كنت تريد الذهاب الطريق 'الطبقة الأساسية' ، والعرف تتألف الشرح ربما ليس مفيدا لك.

التحيات,

سام (مؤلف إطار الربيع تيستكونتيكست)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top