2014-11-14 70 views
0

下面是我的代碼,使用mockito對我的控制器類進行單元測試。Mockito with spring mvc

但我得到如下

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")); 
    } 

} 

回答

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。你的答案

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

謝謝....現在,當我跑,我得到錯誤java.lang.NoClassDefFoundError:如果您使用的是Maven,添加此組織/ springframework的/網絡/的servlet/FlashMapManager \t在org.springframework.test.web.servlet.setup.MockMvcBuilders.standaloneSetup(MockMvcBuilders.java:71) –

+0

我更新了我的答案。 – Khalid

+0

仍然是同樣的問題...我應該使用哪個版本的spring-webmvc依賴項? –