用的Mockito Spring MVC的(Mockito with Spring mvc)

2019-10-21 07:12发布

下面是一个使用我的Mockito代码进行单元测试我的控制器类。

但我得到的运行时错误如下

java.lang.NoClassDefFoundError:组织/ springframework的/网络/的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"));
    }

}

Answer 1:

您需要静态导入get

import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;

您还使用statusview 。 您需要导入这些呢:

import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.view;

编辑:回答你的编辑新问题,确保你在你的类路径中最新的servlet API。 如果您使用的是Maven,补充一点:

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1.0</version>
</dependency>


文章来源: Mockito with Spring mvc