在struts2.5.17下搭建struts2-junit-plugin-2.5.17时出现NullPointerException

anniezyx 2019-02-21 04:27:16
新手,想在struts2.5使用struts2-junit-plugin-2.5.17测试,不知道有没有拉了哪些关键部分,敬请各位前辈指点指点从哪里下手纠错。谢谢

struts.xml程序片段
<action name="helloJUnit"
class="a.b.c.d.e.web.actions.HelloJUnit" method="execute">
<result name="success" type="tiles">.clf.home</result>
<result name="error" type="tiles">.clf.home</result>
</action>

HelloJUnit.java
package a.b.c.d.e.web.actions;
import com.opensymphony.xwork2.ActionSupport;

@SuppressWarnings("serial")
public class HelloJUnit extends ActionSupport {
private String username;

public String execute() throws Exception {
// TODO Auto-generated method stub
return SUCCESS;
}

public String getusername() {
return this.username;
}

public void setusername(String username) {
this.username = username;
}
}

web.xml程序片段
    <filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter
</filter-class>
</filter>

<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

StrutsTest.java
package a.b.c.d.e.junit;

//import java.io.UnsupportedEncodingException;

//import javax.servlet.ServletException;

import org.apache.struts2.StrutsTestCase;
import org.apache.struts2.dispatcher.mapper.ActionMapping;
import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionProxy;

import a.b.c.d.e.web.actions.HelloJUnit;

public class StrutsTest extends StrutsTestCase {

//Test Action
public void testGetActionMapping() throws Exception {

System.out.println("Struts 2 JUnit Test: testGetActionMapping");

ActionMapping mapping = getActionMapping("/web/actions/HelloJUnit");
//ActionMapping mapping = getActionMapping("/HelloJUnit");//works!
//ActionMapping mapping = getActionMapping("/web/actions/HelloJUnit.action");//works!
assertNotNull(mapping);
//System.out.println(mapping.getNamespace());
assertEquals("/", mapping.getNamespace());
//System.out.println(mapping.getName());
assertEquals("HelloJUnit", mapping.getName());

System.out.println("...testGetActionMapping done!");
}

public void testGetActionProxy() throws Exception {

//set parameters before calling getActionProxy
request.setParameter("username", "ABC001");
System.out.println(request.getParameter("username"));

ActionProxy proxy = getActionProxy("/HelloJUnit");
System.out.println("...01");
/*
assertNotNull(proxy);
System.out.println("...02");
HelloJUnit action = (HelloJUnit) proxy.getAction();
assertNotNull(action);
System.out.println("...03");
String result = proxy.execute();
assertEquals(Action.SUCCESS, result);
System.out.println("...04");
assertEquals("ABC001", action.getUsername());
System.out.println("...testGetActionProxy done!");
*/
}
}


Run as JUnit Test 的结果是
testGetActionMapping 是通过了,输出:
Struts 2 JUnit Test: testGetActionMapping
...testGetActionMapping done!
但testGetActionProxy不通,输出:
ABC001

报错:
java.lang.NullPointerException
at org.apache.struts2.factory.StrutsActionProxy.getErrorMessage(StrutsActionProxy.java:63)
at com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:195)
at org.apache.struts2.factory.StrutsActionProxy.prepare(StrutsActionProxy.java:57)
at org.apache.struts2.factory.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:32)
at com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:60)
at org.apache.struts2.StrutsTestCase.getActionProxy(StrutsTestCase.java:137)
at a.b.c.d.e.junit.StrutsTest.testGetActionProxy(StrutsTest.java:40)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at junit.framework.TestCase.runTest(TestCase.java:168)
at junit.framework.TestCase.runBare(TestCase.java:134)
at junit.framework.TestResult$1.protect(TestResult.java:110)
at junit.framework.TestResult.runProtected(TestResult.java:128)
at junit.framework.TestResult.run(TestResult.java:113)
at junit.framework.TestCase.run(TestCase.java:124)
at junit.framework.TestSuite.runTest(TestSuite.java:232)
at junit.framework.TestSuite.run(TestSuite.java:227)
at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:91)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)

不好意思,不知道描述清楚了没有?谢谢
...全文
221 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
bcsflilong 2019-02-25
  • 打赏
  • 举报
回复
在自己电脑上看看StrutsActionProxy的63号 是怎么了
anniezyx 2019-02-22
  • 打赏
  • 举报
回复
引用 1 楼 bcsflilong 的回复:
debug 跟一下代码 StrutsTestCase 看看他的137行做什么操作了
谢谢,单位不允许attach source上去,所以debug进不去
bcsflilong 2019-02-21
  • 打赏
  • 举报
回复
debug 跟一下代码 StrutsTestCase 看看他的137行做什么操作了

81,095

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧