2015-01-26 3 views
0

mockito 프레임 워크를 사용하여 간단한 서블릿을 테스트하려고하는데 다음과 같은 예외가 발생합니다. 안내해주십시오. 나는 다음과 같은 mockito 의존성이 내 pom.xml 파일에 추가 한서블릿에 대한 Mockito 유닛 테스트가 실패했습니다.

<dependency> 
    <groupId>org.mockito</groupId> 
    <artifactId>mockito-all</artifactId> 
    <version>1.10.19</version> 
    <scope>test</scope> 
</dependency> 

예외

------------------------------------------------------- 
T E S T S 
------------------------------------------------------- 
Running com.istore.web.controllers.HomePageControllerTest 
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.285 sec <<< FAILURE! 
testProcessRequest(com.istore.web.controllers.HomePageControllerTest) Time elapsed: 0.01 sec <<< ERROR! 
java.lang.ExceptionInInitializerError 
    at com.istore.web.controllers.HomePageControllerTest.setUp(HomePageControllerTest.java:31) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45) 
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) 
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42) 
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:27) 
    at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:30) 
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263) 
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68) 
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47) 
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231) 
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60) 
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229) 
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50) 
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222) 
    at org.junit.runners.ParentRunner.run(ParentRunner.java:300) 
    at org.mockito.internal.runners.JUnit45AndHigherRunnerImpl.run(JUnit45AndHigherRunnerImpl.java:37) 
    at org.mockito.runners.MockitoJUnitRunner.run(MockitoJUnitRunner.java:62) 
    at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:252) 
    at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:141) 
    at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:112) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189) 
    at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165) 
    at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85) 
    at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115) 
    at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75) 
Caused by: java.util.MissingResourceException: Can't find bundle for base name javax.servlet.LocalStrings, locale en_US 
    at java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:1499) 
    at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1322) 
    at java.util.ResourceBundle.getBundle(ResourceBundle.java:721) 
    at javax.servlet.GenericServlet.<clinit>(GenericServlet.java:95) 
    ... 33 more 


Results : 

Tests in error: 
    testProcessRequest(com.istore.web.controllers.HomePageControllerTest) 

Tests run: 1, Failures: 0, Errors: 1, Skipped: 0 

------------------------------------------------------------------------ 
BUILD FAILURE 
------------------------------------------------------------------------ 
Total time: 2.137 s 
Finished at: 2015-01-26T00:43:27-05:00 
Final Memory: 10M/154M 
------------------------------------------------------------------------ 
Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.12.4:test (default-cli) on project istore-mvc2: There are test failures. 

HomePageController.java

package com.istore.web.controllers; 

import static com.istore.utils.AppConstants.HOME_PAGE_URL; 
import static com.istore.utils.AppConstants.TEMPLATE_PAGE_URL; 
import com.istore.utils.GenericUtils; 
import java.io.IOException; 
import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
import javax.servlet.http.HttpSession; 
import org.apache.log4j.Logger; 

public class HomePageController extends HttpServlet { 

    private static final Logger LOG = Logger.getLogger(HomePageController.class); 

    @Override 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     processRequest(request, response); 
    } 

    @Override 
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     processRequest(request, response); 
    } 

    protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     LOG.debug("Into the HomePageController..."); 
     showPage(request, response, HOME_PAGE_URL); 
    } 

    private void showPage(HttpServletRequest request, HttpServletResponse response, String viewName) throws ServletException, IOException { 
     LOG.debug("Displaying " + viewName + " page now..."); 
     String url = TEMPLATE_PAGE_URL + "?gotoPage=" + viewName;   
     //forward the request to the page 
     request.getServletContext().getRequestDispatcher(url).forward(request, response); 
    } 

} 

HomePageControllerTest.java

package com.istore.web.controllers; 

import javax.servlet.RequestDispatcher; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
import static junit.framework.Assert.assertEquals; 
import org.junit.After; 
import org.junit.Before; 
import org.junit.Test; 
import org.junit.runner.RunWith; 
import org.mockito.ArgumentCaptor; 
import static org.mockito.Matchers.anyString; 
import org.mockito.Mock; 
import static org.mockito.Mockito.verify; 
import static org.mockito.Mockito.when; 
import org.mockito.runners.MockitoJUnitRunner; 

@RunWith(MockitoJUnitRunner.class) 
public class HomePageControllerTest { 

    @Mock 
    private HttpServletRequest request; 
    @Mock 
    private HttpServletResponse response; 
    @Mock 
    private RequestDispatcher dispatcher; 
    HomePageController controllerServlet; 

    @Before 
    public void setUp() { 
     controllerServlet = new HomePageController(); 
     when(request.getRequestDispatcher(anyString())).thenReturn(dispatcher); 
    } 

    @Test 
    public void testProcessRequest() throws Exception { 
     when(request.getServletPath()).thenReturn("homePageController.do"); 
     controllerServlet.doGet(request, response); 
     ArgumentCaptor<String> dispatcherArgument = ArgumentCaptor.forClass(String.class); 
     verify(request).getRequestDispatcher(dispatcherArgument.capture()); 
     assertEquals("home.jsp", dispatcherArgument.getValue()); 
    } 

    @After 
    public void tearDown() { 
    } 
} 

답변

0

는 클래스 패스처럼 보인다 Sinc를 발행하다 발견하려고하는 번들은 "javax.servlet.LocalStrings"입니다. 클래스 경로에 javax.selvlet-api가 있습니까? Error creating object MockHttpServletResponse for unit testing

+0

에서 pom의 "제공된"범위에 이미 "javaee-web-api"가 있습니다. 클래스 패스에 javax.servlet-api가 자동으로 포함되지 않습니까? – user2325154

관련 문제