Вопрос

Я пытаюсь научиться использовать 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% не знает о том, что это веб-приложение).

Чтобы получить больше информации, видеть Весенняя справочная документация.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top