Struts2.3.12 тестовый случай junit4 и сеанс пусты

Я уже прошел через это решение:Struts 2 JUnit Plugin v2.2.3: Расширение класса тестирования StrutsTestCase; 'запрос' нулевой

Но я'Я уже не имею Struts2-Spring плагин, и я тожеиспользую пружину в моем приложении.

У меня есть 3 тестовых случая, 2 сбоев при запросе, равном нулю, и один сбоев при сеансе, равном нулю

Первый Stacktrace

java.lang.NullPointerException
    at org.apache.struts2.interceptor.MessageStoreInterceptor.before(MessageStoreInterceptor.java:228)
    at org.apache.struts2.interceptor.MessageStoreInterceptor.intercept(MessageStoreInterceptor.java:193)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
    at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54)
    at actions.TestIoOptimizationAction.login(TestIoOptimizationAction.java:29)

соответствует

            Collection actionErrors = (Collection) session.get(actionErrorsSessionKey);

Второй & Третий тестовый стек

java.lang.NullPointerException
    at org.apache.struts2.impl.StrutsActionProxy.getErrorMessage(StrutsActionProxy.java:69)
    at com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:185)
    at org.apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.java:63)
    at org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:39)
    at com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:58)
    at org.apache.struts2.StrutsJUnit4TestCase.getActionProxy(StrutsJUnit4TestCase.java:149)

соответствует

        String contextPath = ServletActionContext.getRequest().getContextPath();

Я считаю, что есть некоторые проблемы с зависимостями. Я'мы пытались удалить несколько зависимостей по одному и в комбинации, но ни одна не работала.

Вот'как выглядит мой POM:


        
            javax.servlet
            jsp-api
            2.0
            test
        
        
            com.paypal.sdk
            rest-api-sdk
            0.7.1
        
        
            net.sourceforge.htmlunit
            htmlunit
            2.12
            compile
        
        
            org.apache.commons
            commons-lang3
            3.0
            jar
            compile
        
        
            commons-beanutils
            commons-beanutils-core
            1.8.3
        
        
            javax.mail
            mail
            1.4.5
        
        
            commons-lang
            commons-lang
            2.4
        
        
            javax.persistence
            persistence-api
            1.0
            jar
            compile
        
        
            mysql
            mysql-connector-java
            5.1.6
        
        
            org.hibernate
            hibernate-entitymanager
            ${hibernate.version}
        
        
            org.hibernate
            hibernate-validator
            4.0.0.GA
        
        
            org.hibernate
            hibernate-c3p0
            ${hibernate.version}
        
        
            org.slf4j
            slf4j-log4j12
            1.6.1
        

        
            org.apache.tiles
            tiles-servlet
            2.1.4
        
        
            org.apache.tiles
            tiles-jsp
            2.1.4
        

        
            org.apache.struts
            struts2-core
            ${struts.version}
        
        
            org.apache.struts
            struts2-json-plugin
            ${struts.version}
        
        
            org.apache.struts
            struts2-tiles-plugin
            ${struts.version}
        
        
            org.apache.struts
            struts2-junit-plugin
            ${struts.version}
        


        
            joda-time
            joda-time
            2.1
        
        
            org.quartz-scheduler
            quartz
            1.7.3
        

        

        
            commons-collections
            commons-collections
            3.2.1
            jar
        
        
            org.jboss.spec
            jboss-javaee-6.0
            1.0.0.Final
            pom
            provided
        
        
            org.apache.myfaces.core
            myfaces-api
            2.1.11
        

        
            net.sf.jasperreports
            jasperreports
            3.7.5
        
        
            com.google.code.gson
            gson
            2.2.4
        
        
            xml-apis
            xml-apis
            1.4.01
                    
    

        2.3.12
        3.6.10.Final
        3.5.1
        all
        Tomcat
    

Обновить - Тесты выглядят так

@Test
public void login() throws Exception {
    request.setParameter("email", "[email protected]");
    request.setParameter("password", "22");
    ActionProxy proxy = getActionProxy("login");
    String result = proxy.execute();
    assertEquals("success", result);
    System.out.println(response.getContentAsString());
}

@Test
public void testView() throws Exception {
    ActionProxy proxy = getActionProxy("/optimize/view");
    String result = proxy.execute();
    assertEquals("success", result);
    System.out.println(response.getContentAsString());

    proxy = getActionProxy("/optimize/view/23");
    result = proxy.execute();
    assertEquals("success", result);
    System.out.println(response.getContentAsString());

    proxy = getActionProxy("/optimize/view/110");
    result = proxy.execute();
    assertEquals("success", result);
    System.out.println(response.getContentAsString());
}

@Test
public void testSave() throws Exception {
    request.setContent("{\"id\":\"1\",\"name\":\"nitin\"}".getBytes());
    request.addHeader("Content-Type", "application/json");
    request.setMethod("POST");

    ActionProxy proxy = getActionProxy("/save");
    actions.IoOptimizationAction myAct = (actions.IoOptimizationAction) proxy.getAction();

    String result = proxy.execute();

    assertEquals("success", result);
    System.out.println(response.getContentAsString());
}

ОБНОВИТЬ Я изменил тест, чтобы выполнить действие, как предложено & следовательно, второй тест теперь выглядит как

 @Test
    public void testView() throws Exception {
        System.out.println(ActionContext.getContext());
        System.out.println(executeAction("optimize/view"));
}

Ошибка трассировки стека:

[2013-10-29 14:50:38.766] [ WARN] MockServletContext.getRealPath:298 - Couldn't determine real path of resource class path resource [org/apache/struts2/dispatcher/error_en_US.ftl]
java.io.FileNotFoundException: class path resource [org/apache/struts2/dispatcher/error_en_US.ftl] cannot be resolved to URL because it does not exist
    at org.springframework.core.io.ClassPathResource.getURL(ClassPathResource.java:179)
    at org.springframework.core.io.AbstractFileResolvingResource.getFile(AbstractFileResolvingResource.java:48)
    at org.springframework.mock.web.MockServletContext.getRealPath(MockServletContext.java:295)
    at freemarker.cache.WebappTemplateLoader.findTemplateSource(WebappTemplateLoader.java:129)
    at freemarker.cache.MultiTemplateLoader.findTemplateSource(MultiTemplateLoader.java:111)
    at freemarker.cache.TemplateCache.acquireTemplateSource(TemplateCache.java:646)
    at freemarker.cache.TemplateCache.findTemplateSource(TemplateCache.java:622)
    at freemarker.cache.TemplateCache.getTemplate(TemplateCache.java:346)
    at freemarker.cache.TemplateCache.getTemplate(TemplateCache.java:235)
    at freemarker.template.Configuration.getTemplate(Configuration.java:578)
    at freemarker.template.Configuration.getTemplate(Configuration.java:543)
    at org.apache.struts2.dispatcher.Dispatcher.sendError(Dispatcher.java:841)
    at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:569)
    at org.apache.struts2.StrutsJUnit4TestCase.executeAction(StrutsJUnit4TestCase.java:128)
    at actions.TestIoOptimizationAction.testView(TestIoOptimizationAction.java:44)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
    at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
    at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
    at junit.framework.JUnit4TestAdapter.run(JUnit4TestAdapter.java:39)
    at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.run(JUnitTestRunner.java:520)
    at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.launch(JUnitTestRunner.java:1060)
    at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.main(JUnitTestRunner.java:911)
[2013-10-29 14:50:38.810] [ WARN] MockServletContext.getRealPath:298 - Couldn't determine real path of resource class path resource [org/apache/struts2/dispatcher/error_en.ftl]
java.io.FileNotFoundException: class path resource [org/apache/struts2/dispatcher/error_en.ftl] cannot be resolved to URL because it does not exist
    at org.springframework.core.io.ClassPathResource.getURL(ClassPathResource.java:179)
    at org.springframework.core.io.AbstractFileResolvingResource.getFile(AbstractFileResolvingResource.java:48)
    at org.springframework.mock.web.MockServletContext.getRealPath(MockServletContext.java:295)
    at freemarker.cache.WebappTemplateLoader.findTemplateSource(WebappTemplateLoader.java:129)
    at freemarker.cache.MultiTemplateLoader.findTemplateSource(MultiTemplateLoader.java:111)
    at freemarker.cache.TemplateCache.acquireTemplateSource(TemplateCache.java:646)
    at freemarker.cache.TemplateCache.findTemplateSource(TemplateCache.java:622)
    at freemarker.cache.TemplateCache.getTemplate(TemplateCache.java:346)
    at freemarker.cache.TemplateCache.getTemplate(TemplateCache.java:235)
    at freemarker.template.Configuration.getTemplate(Configuration.java:578)
    at freemarker.template.Configuration.getTemplate(Configuration.java:543)
    at org.apache.struts2.dispatcher.Dispatcher.sendError(Dispatcher.java:841)
    at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:569)
    at org.apache.struts2.StrutsJUnit4TestCase.executeAction(StrutsJUnit4TestCase.java:128)
    at actions.TestIoOptimizationAction.testView(TestIoOptimizationAction.java:44)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
    at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
    at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
    at junit.framework.JUnit4TestAdapter.run(JUnit4TestAdapter.java:39)
    at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.run(JUnitTestRunner.java:520)
    at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.launch(JUnitTestRunner.java:1060)
    at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.main(JUnitTestRunner.java:911)
[2013-10-29 14:50:39.127] [ WARN] MockServletContext.getRealPath:298 - Couldn't determine real path of resource class path resource [org/apache/struts2/dispatcher/error.ftl]
java.io.FileNotFoundException: class path resource [org/apache/struts2/dispatcher/error.ftl] cannot be resolved to absolute file path because it does not reside in the file system: jar:file:/C:/Users/hp/.m2/repository/org/apache/struts/struts2-core/2.3.12/struts2-core-2.3.12.jar!/org/apache/struts2/dispatcher/error.ftl
    at org.springframework.util.ResourceUtils.getFile(ResourceUtils.java:204)
    at org.springframework.core.io.AbstractFileResolvingResource.getFile(AbstractFileResolvingResource.java:52)
    at org.springframework.mock.web.MockServletContext.getRealPath(MockServletContext.java:295)
    at freemarker.cache.WebappTemplateLoader.findTemplateSource(WebappTemplateLoader.java:129)
    at freemarker.cache.MultiTemplateLoader.findTemplateSource(MultiTemplateLoader.java:111)
    at freemarker.cache.TemplateCache.acquireTemplateSource(TemplateCache.java:646)
    at freemarker.cache.TemplateCache.findTemplateSource(TemplateCache.java:622)
    at freemarker.cache.TemplateCache.getTemplate(TemplateCache.java:346)
    at freemarker.cache.TemplateCache.getTemplate(TemplateCache.java:235)
    at freemarker.template.Configuration.getTemplate(Configuration.java:578)
    at freemarker.template.Configuration.getTemplate(Configuration.java:543)
    at org.apache.struts2.dispatcher.Dispatcher.sendError(Dispatcher.java:841)
    at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:569)
    at org.apache.struts2.StrutsJUnit4TestCase.executeAction(StrutsJUnit4TestCase.java:128)
    at actions.TestIoOptimizationAction.testView(TestIoOptimizationAction.java:44)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
    at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
    at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
    at junit.framework.JUnit4TestAdapter.run(JUnit4TestAdapter.java:39)
    at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.run(JUnitTestRunner.java:520)
    at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.launch(JUnitTestRunner.java:1060)
    at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.main(JUnitTestRunner.java:911)


    Struts Problem Report
    
        pre {
            margin: 0;
            padding: 0;
        }    
    


    Struts Problem Report
    <p>
    Struts has detected an unhandled exception:
    </p>




    
        <strong>Messages</strong>:
        
        
    
    
        <strong>File</strong>:
        org/apache/struts2/impl/StrutsActionProxy.java
    
    
        <strong>Line number</strong>:
        69
    







Stacktraces

    <strong>java.lang.NullPointerException</strong>
    
    <pre>    org.apache.struts2.impl.StrutsActionProxy.getErrorMessage(StrutsActionProxy.java:69)
    com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:185)
    org.apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.java:63)
    org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:39)
    com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:58)
    org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:536)
    org.apache.struts2.StrutsJUnit4TestCase.executeAction(StrutsJUnit4TestCase.java:128)
    actions.TestIoOptimizationAction.testView(TestIoOptimizationAction.java:44)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    java.lang.reflect.Method.invoke(Method.java:597)
    org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
    org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
    org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
    org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
    org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
    org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
    org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79)
    org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71)
    org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49)
    org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
    org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
    org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
    org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
    org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
    org.junit.runners.ParentRunner.run(ParentRunner.java:236)
    junit.framework.JUnit4TestAdapter.run(JUnit4TestAdapter.java:39)
    org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.run(JUnitTestRunner.java:520)
    org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.launch(JUnitTestRunner.java:1060)
    org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.main(JUnitTestRunner.java:911)
    </pre>
    





<p>
You are seeing this page because development mode is enabled.  Development mode, or devMode, enables extra
debugging behaviors and reports to assist developers.  To disable this mode, set:
</p><pre>  struts.devMode=false
</pre>
in your <code>WEB-INF/classes/struts.properties</code> file.
<p></p>



Ответы на вопрос(3)

Ваш ответ на вопрос