powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Тестирование Spring MVC с применением Mockito
9 сообщений из 9, страница 1 из 1
Тестирование Spring MVC с применением Mockito
    #38331312
abc_da
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день,
Хочу написать тесты для SpringMVC контроллера, который тянет информацию из веб-сервиса. Чтобы тесты были проще и работали быстрее, хочу заменить сервис на mock-объект, для создания которого использую Mockito. У меня возникла проблема: не получается подменить реальный сервис mock-объектом. Подменить пытаюсь вот так:

Код: xml
1.
2.
3.
4.
5.
    <!--<bean class="com.springapp.service.SampleService" scope="singleton"/>-->

    <bean class="org.mockito.Mockito" factory-method="mock">
        <constructor-arg index="0" value="com.springapp.service.SampleService"/>
    </bean>



Получаю вот такую ошибку:
Код: java
1.
2.
3.
4.
5.
6.
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [com.springapp.service.SampleService] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:949)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:818)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:730)
	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:486)
	... 58 more



В приложенном архиве упрощенный проект, иллюстрирующий ошибку. Заранее спасибо за помощь.
...
Рейтинг: 0 / 0
Тестирование Spring MVC с применением Mockito
    #38332266
Nis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Nis
Гость
abc_da,

а как выглядит вас юнит-тест?
...
Рейтинг: 0 / 0
Тестирование Spring MVC с применением Mockito
    #38332519
abc_da
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Nis, он есть в приложенном файле. Вот:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
package com.springapp.mvc;

import com.springapp.service.SampleService;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.web.WebAppConfiguration;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.web.context.WebApplicationContext;

import static org.mockito.Mockito.when;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.forwardedUrl;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.view;
import static org.springframework.test.web.servlet.setup.MockMvcBuilders.webAppContextSetup;

@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@ContextConfiguration({"file:src/main/webapp/WEB-INF/mvc-dispatcher-servlet.xml", "file:src/main/webapp/WEB-INF/context.xml"})
public class AppTests {
    private MockMvc mockMvc;

    @SuppressWarnings("SpringJavaAutowiringInspection")
    @Autowired
    protected WebApplicationContext wac;

    @Autowired
    private SampleService service;
    
    @Before
    public void setup() {
        this.mockMvc = webAppContextSetup(this.wac).build();
    }

    @Test
    public void simple() throws Exception {
        when(service.service()).thenReturn("mock");
        
        mockMvc.perform(get("/"))
                .andExpect(status().isOk())
                .andExpect(view().name("mock"))
                .andReturn();
    }
}



В гугле много решений на тему внедрения mock-объектов в контекст, но ни одно из них мне не удалось прикрутить. Например, вот это - очень близко, но SpringockitoContextLoader.class не умеет загружать WebApplicationContext и мне не удавалось инициализировать MockMvc. Я, к сожалению, не большой знаток спринга.
...
Рейтинг: 0 / 0
Тестирование Spring MVC с применением Mockito
    #38332932
Фотография dmitriyche
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
abc_da,

Добрый день, получите скорректированную версию.

P.S.
Очень приятно что к топику был приложен Maven проект.
...
Рейтинг: 0 / 0
Тестирование Spring MVC с применением Mockito
    #38334163
abc_da
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dmitriyche, спасибо большое за помощь!
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Тестирование Spring MVC с применением Mockito
    #39276857
ErikI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А вот я никак не могу получить WebApplicationContext
...
Рейтинг: 0 / 0
Тестирование Spring MVC с применением Mockito
    #39276858
ErikI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Перед тестом прописал
...
Рейтинг: 0 / 0
Тестирование Spring MVC с применением Mockito
    #39276859
ErikI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
@ContextConfiguration(locations = {
"/root-context.xml",
"/appServlet/controllers.xml",
"/appServlet/servlet-context.xml"
})
@TestExecutionListeners({
DependencyInjectionTestExecutionListener.class,
DirtiesContextTestExecutionListener.class,
TransactionalTestExecutionListener.class
})

P.S.
При нажатии ctrl+enter отправляются сообщения.
...
Рейтинг: 0 / 0
Тестирование Spring MVC с применением Mockito
    #39276876
ErikI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Отвечаю на свой вопрос.
Оказывается в Spring 4 поменяли название, теперь так
@Resource
private WebApplicationContext wac;

Кроме того надо добавить анотацию к классу @WebAppConfiguration
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Тестирование Spring MVC с применением Mockito
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]