Почему моя фасоль нулевой?
-
25-09-2019 - |
Вопрос
Я пытаюсь научиться использовать ApplicationContext. Моя цель состоит в том, чтобы поменять репозиторий издевательства данных для реального при использовании моих модульных тестов. Я не хочу делать это явно, я хочу сделать это с инъекцией зависимости.
Так как простой тест, прежде чем делать вещи сложными, я просто пытаюсь получить боб из моего applicationContext.xml. От того, что я прочитал, это должно работать:
@ContextConfiguration(locations = "/applicationContext.xml")
public class ResultsListTests {
@Resource
CompanyResult resultBean;
@Test
public void shouldAddResults() {
assertEquals(resultBean.getCompanyName(), "Microsoft");
Но мой результат в мире всегда нулевой. Вот мой icapercontext.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
в корне класса, а не в WebContent/WEB-INF
(Junit на 100% не знает о том, что это веб-приложение).
Чтобы получить больше информации, видеть Весенняя справочная документация.