用StrutsTestCase测试struts Action时,报空指针异常?

a4k 2005-08-29 11:36:36
//设置了action-config.xml
<action path="/user"
type="web.org.exblog.webapp.action.UserAction">
<forward name="success" path="/index.jsp" />
</action>


public class UserActionTest extends MockStrutsTestCase {

public void testExecute() {

setRequestPathInfo("user");
addRequestParameter("id", "1");
actionPerform(); // 报错信息指定为这一行.错误信息见下:
verifyForward("success");
verifyNoActionErrors();
}
}


错误信息:
(struts.MockStrutsTestCase 330 ) Error initializing action servlet
javax.servlet.ServletException
at org.apache.struts.action.ActionServlet.initServlet(ActionServlet.java:1437)
at org.apache.struts.action.ActionServlet.init(ActionServlet.java:466)
at javax.servlet.GenericServlet.init(GenericServlet.java:211)
at servletunit.struts.MockStrutsTestCase.getActionServlet(MockStrutsTestCase.java:326)
at servletunit.struts.MockStrutsTestCase.actionPerform(MockStrutsTestCase.java:394)
at web.org.exblog.action.UserActionTest.testExecute(UserActionTest.java:14)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

There was 1 error:
1) testExecute(web.org.exblog.action.UserActionTest)java.lang.NullPointerException
at servletunit.struts.MockStrutsTestCase.getActionServlet(MockStrutsTestCase.java:331)
at servletunit.struts.MockStrutsTestCase.tearDown(MockStrutsTestCase.java:130)
at web.org.exblog.action.UserActionTest.main(UserActionTest.java:20)

14行为:actionPerform();
...全文
204 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
a4k 2005-08-31
  • 打赏
  • 举报
回复
楼上的朋友,改着改着又出现这个错误了.
添加了action form, action.

试着在测试类中设置setContextDirectory(),为/WEB-INF/目录还能不行,struts-config.xml在下面.

在myeclipse中测试,相关类放到classpath中去了.

servletunit.struts.ExceptionDuringTestError: A NullPointerException was thrown. This may indicate an error in your ActionForm, or it may indicate that the Struts ActionServlet was unable to find struts config file. TestCase is running from f:\Documents and Settings\HexUzHoNG\eclipse-SDK-3.1-win32\workspace\jbook directory. Context directory has not been set. Try calling setContextDirectory() with a relative or absolute path. struts config file must be found under the context directory, the directory the test case is running from, or in the classpath.
at servletunit.struts.MockStrutsTestCase.actionPerform(MockStrutsTestCase.java:384)
at web.org.exblog.webapp.action.UserActionTest.testExecute(UserActionTest.java:22)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at junit.framework.TestCase.runTest(TestCase.java:154)
at junit.framework.TestCase.runBare(TestCase.java:127)
at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:118)
at junit.framework.TestSuite.runTest(TestSuite.java:208)
at junit.framework.TestSuite.run(TestSuite.java:203)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:478)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:344)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
------------
Root Cause:
------------
java.lang.NullPointerException
at servletunit.struts.MockStrutsTestCase.getActionServlet(MockStrutsTestCase.java:308)
at servletunit.struts.MockStrutsTestCase.actionPerform(MockStrutsTestCase.java:371)
at web.org.exblog.webapp.action.UserActionTest.testExecute(UserActionTest.java:22)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at junit.framework.TestCase.runTest(TestCase.java:154)
at junit.framework.TestCase.runBare(TestCase.java:127)
at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:118)
at junit.framework.TestSuite.runTest(TestSuite.java:208)
at junit.framework.TestSuite.run(TestSuite.java:203)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:478)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:344)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)

wzrain 2005-08-29
  • 打赏
  • 举报
回复
没建ActionForm吧?

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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