سؤال

أحاول معرفة كيفية استخدام ApplicationContext. هدفي هو تبديل مستودع بيانات وهمية لمجلة حقيقية عند استخدام اختبارات وحدتي. لا أريد أن أفعل هذا بشكل صريح ، أريد أن أفعل ذلك مع حقن التبعية.

لذا ، كاختبار بسيط قبل أن أجعل الأمور معقدة ، أحاول ببساطة إخراج الفول من ApplicationContext.xml. من ما قرأته ، يجب أن ينجح هذا:

@ContextConfiguration(locations = "/applicationContext.xml")
public class ResultsListTests {

     @Resource
     CompanyResult resultBean;

     @Test
     public void shouldAddResults() {
         assertEquals(resultBean.getCompanyName(), "Microsoft");

لكن النتيجة الخاصة بي هي دائما لاغية. فيما يلي Application Context.xml ، الموجود تحت WebContent/Web-Inf:

<?xml version="1.0" encoding="UTF-8"?>
<beans>
    <bean id="resultBean" name="resultBean" class="com.trgr.cobalt.company.domain.CompanyResult">
        <property name="companyName">
            <value>Microsoft</value>
        </property>
     </bean>
</beans>

فلماذا ننتبي دائما لاغية؟ ماذا فعلت بشكل غير صحيح؟

هل كانت مفيدة؟

المحلول

أنت في عداد المفقودين @RunWith(SpringJUnit4ClassRunner.class) حاشية. ملاحظة:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "/applicationContext.xml")
public class ResultsListTests {

     @Resource
     CompanyResult resultBean;

     @Test
     public void shouldAddResults() {
         assertEquals(resultBean.getCompanyName(), "Microsoft");
     }
}

بالمناسبة, ، في عينتك ، WebContent/WEB-INF ليس الموقع المناسب ل applicationContext.xml.

إذا حددت @ContextConfiguration(locations = "/applicationContext.xml") ثم سوف يبحث الربيع عن applicationContext.xml في جذر classpath ، وليس في WebContent/WEB-INF (Junit ليس على دراية بنسبة 100 ٪ من حقيقة أن هذا تطبيق ويب).

للمزيد من المعلومات, ، يرى الوثائق المرجعية الربيع.

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