Java servlet的Mockito单元测试失败

Java servlet的Mockito单元测试失败,java,servlets,junit,mockito,Java,Servlets,Junit,Mockito,我试图使用mockito框架测试一个简单的servlet,但出现以下异常。请导游。我的pom.xml中添加了以下mockito依赖项 <dependency> <groupId>org.mockito</groupId> <artifactId>mockito-all</artifactId> <version>1.10.19</version> <scope>test

我试图使用mockito框架测试一个简单的servlet,但出现以下异常。请导游。我的pom.xml中添加了以下mockito依赖项

<dependency>
    <groupId>org.mockito</groupId>
    <artifactId>mockito-all</artifactId>
    <version>1.10.19</version>
    <scope>test</scope>
</dependency>
HomePageControllerTest.java
包com.istore.web.controllers;
导入javax.servlet.RequestDispatcher;
导入javax.servlet.http.HttpServletRequest;
导入javax.servlet.http.HttpServletResponse;
导入静态junit.framework.Assert.assertEquals;
导入org.junit.After;
导入org.junit.Before;
导入org.junit.Test;
导入org.junit.runner.RunWith;
导入org.mockito.ArgumentCaptor;
导入静态org.mockito.Matchers.anyString;
导入org.mockito.Mock;
导入静态org.mockito.mockito.verify;
导入静态org.mockito.mockito.when;
导入org.mockito.runners.MockitoJUnitRunner;
@RunWith(MockitoJUnitRunner.class)
公共类主页控制器测试{
@嘲弄
私有HttpServletRequest;
@嘲弄
私有HttpServletResponse;
@嘲弄
私有请求调度器;
主页控制器控制器服务;
@以前
公共作废设置(){
controllerServlet=新主页控制器();
when(request.getRequestDispatcher(anyString())。然后return(dispatcher);
}
@试验
public void testProcessRequest()引发异常{
当(request.getServletPath()).thenReturn(“homePageController.do”);
控制器servlet.doGet(请求、响应);
ArgumentCaptor dispatcherArgument=ArgumentCaptor.forClass(String.class);
验证(request).getRequestDispatcher(dispatcherArgument.capture());
assertEquals(“home.jsp”,dispatcherArgument.getValue());
}
@之后
公共无效拆卸(){
}
}

似乎是类路径问题,因为它试图找到的包是“javax.servlet.LocalStrings”。 类路径中是否有javax.selvlet-api。请在

中查找相关问题,我已经在pom的“提供”范围中有了“javaee web api”。这不会自动将javax.servlet-api包含在类路径中吗?
-------------------------------------------------------
 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.
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);
    }

}
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() {
    }
}