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>