Тестирование контроллера Spring MVC с помощью Mockito

Ниже мой код для модульного тестирования моего класса контроллера с использованием mockito.

но я получаю ошибки во время выполнения, как показано ниже

java.lang.NoClassDefFoundError: org / springframework / web / servlet / FlashMapManager в org.springframework.test.web.servlet.setup.MockMvcBuilders.standaloneSetup (MockMvcBuilders.java:71)

может кто-нибудь помочь мне в этом, пожалуйста

 package com.emc.elms.eomp.controller.ela;

    import java.util.ArrayList;
    import java.util.List;

    import org.apache.log4j.Logger;
    import org.junit.Before;
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.mockito.InjectMocks;
    import org.mockito.Mock;
    import org.mockito.MockitoAnnotations;
    import org.mockito.runners.MockitoJUnitRunner;
    import org.springframework.test.web.servlet.MockMvc;
    import org.springframework.test.web.servlet.setup.MockMvcBuilders;
    import org.springframework.util.Assert;

    import com.emc.elms.eomp.constants.EOMPConstants;
    import com.emc.elms.eomp.controller.ELAController;
    import com.emc.elms.eomp.manager.ela.ELAManager;
    import com.emc.elms.eomp.vo.ela.SalesOrderVO;

    @RunWith(MockitoJUnitRunner.class)
    //@ContextConfiguration({"classpath*:junit_servlet-context.xml"})
    public class ELAControllerTest {

        @Mock
        ELAManager elaManager;



        @InjectMocks
        private  ELAController elaController;

        @Mock
        List<SalesOrderVO> salesOrderVOs;

        private MockMvc mockMvc;

        Logger logger = Logger.getLogger(ELAControllerTest.class);

        @Before
        public  void setUp() throws Exception {

            MockitoAnnotations.initMocks(this);
             mockMvc = MockMvcBuilders.standaloneSetup(elaController).build();

        }

        @Test
        public void testHome() {
            String view = elaController.home();
            Assert.isTrue(view.equals("home"));
        }

        @Test
        public void testGetELAList() {

             salesOrderVOs = new ArrayList<SalesOrderVO>();

            doReturn(salesOrderVOs).when(elaManager).getELAList(EOMPConstants.STR_BLANK,EOMPConstants.STR_BLANK,null);

            // when(elaManager.getELAList(EOMPConstants.STR_BLANK,EOMPConstants.STR_BLANK,null)).thenReturn(salesOrderVOs);

             //when(elaManager.getELAList(EOMPConstants.STR_BLANK,EOMPConstants.STR_BLANK,any(Date.class))).thenReturn(salesOrderVOs);

              mockMvc.perform(get("/ela/elaVslaReport")
                        .param(EOMPConstants.STR_SORT_COLUMN, "salesOrderNumber")
                        .param("reportType", "Active"))
                        .andExpect(status().isOk())
                        .andExpect(view().name("elaVslaReport"));

              mockMvc.perform(get("/ela/elaVslaReport")
                        .param(EOMPConstants.STR_SORT_COLUMN, "salesOrderNumber")
                        .param("reportType", "All"))
                        .andExpect(status().isOk())
                        .andExpect(view().name("elaVslaReport"));

              mockMvc.perform(get("/ela/elaVslaReport")
                        .param(EOMPConstants.STR_SORT_COLUMN, "lac")
                        .param("reportType", "Active"))
                        .andExpect(status().isOk())
                        .andExpect(view().name("elaVslaReport"));
        }

    }

person Karibasappa G C    schedule 14.11.2014    source источник
comment
Возможный дубликат Mockito с Spring mvc   -  person Jason Young    schedule 28.06.2018


Ответы (1)


Что вы на самом деле пытаетесь здесь проверить? Вы смешиваете интеграционный тест с модульным тестом.

Если вы хотите протестировать этот контроллер на интеграцию - сделайте это с помощью mock mvc. Если вам нужен интеграционный тест - используйте Mockito (если есть смысл сделать модульный тест этого класса).

person Marcin Grzejszczak    schedule 15.11.2014
comment
Привет, Марчин, мне нужно провести модульное тестирование моего контроллера, поэтому я использую mockito с mockmvc для вызова контроллера ... но в конечном итоге с этим исключением ... есть идеи по этому поводу? - person Karibasappa G C; 15.11.2014
comment
Вы смешиваете 2 вещи. Для модульного тестирования вашего контроллера вам не нужен MockMvc. Зачем вам это нужно? Просто создайте экземпляр вашего контроллера в своем тесте и модульном тесте. MockMvc будет использоваться для интеграционных тестов. - person Marcin Grzejszczak; 16.11.2014