لماذا فولتي لاغية؟
-
25-09-2019 - |
سؤال
أحاول معرفة كيفية استخدام 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 ٪ من حقيقة أن هذا تطبيق ويب).
للمزيد من المعلومات, ، يرى الوثائق المرجعية الربيع.