File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
http://aspose.com/file-tools
The moose likes Struts and the fly likes StrutsTestCase problem Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of Soft Skills this week in the Jobs Discussion forum!
JavaRanch » Java Forums » Frameworks » Struts
Bookmark "StrutsTestCase problem" Watch "StrutsTestCase problem" New topic
Author

StrutsTestCase problem

Jason Vo
Greenhorn

Joined: Aug 12, 2010
Posts: 2
Hi - I use eclipse to run this test case and point "WEB-INF" folder for classpath and I still get the error message below. could you please help me this issue? Thanks

junit 3.8.2. jar
jdk 1.6
Strut-config is located at WebRoot/WEB-INF folder.

====================
import servletunit.struts.MockStrutsTestCase;
public class LogoffActionTest extends MockStrutsTestCase {

private static final String ACTION_PATH = "/logoff";
private static final String CONTEXT_DIR = "WebRoot";

public LogoffActionTest(String arg0) {
super(arg0);
}

protected void setUp() throws Exception {
super.setUp();
setRequestPathInfo(ACTION_PATH);
setContextDirectory(new File(CONTEXT_DIR));
}

protected void tearDown() throws Exception {
super.tearDown();
}

public void testCaseForSuccessfulLogoff() {
actionPerform();
verifyForwardPath("/Logon.jsp");
}
}

--------------Error --------
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 C:\Workspaces\Test\ directory. Context directory is C:\Workspaces\Test\WebRoot. 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:407)
at com.ingenix.itg.subrotrack.security.action.LogoffActionTest.testCaseForSuccessfulLogoff(LogoffActionTest.java:31)
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 junit.framework.TestCase.runTest(TestCase.java:164)
at junit.framework.TestCase.runBare(TestCase.java:130)
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:120)
at junit.framework.TestSuite.runTest(TestSuite.java:230)
at junit.framework.TestSuite.run(TestSuite.java:225)
at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
------------
Root Cause:
------------
java.lang.NullPointerException
at servletunit.struts.MockStrutsTestCase.getActionServlet(MockStrutsTestCase.java:331)
at servletunit.struts.MockStrutsTestCase.actionPerform(MockStrutsTestCase.java:394)
at com.ingenix.itg.subrotrack.security.action.LogoffActionTest.testCaseForSuccessfulLogoff(LogoffActionTest.java:31)
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 junit.framework.TestCase.runTest(TestCase.java:164)
at junit.framework.TestCase.runBare(TestCase.java:130)
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:120)
at junit.framework.TestSuite.runTest(TestSuite.java:230)
at junit.framework.TestSuite.run(TestSuite.java:225)
at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)


David Newton
Author
Rancher

Joined: Sep 29, 2008
Posts: 12617

Well, you might be better off asking the project owner, since it's not an actual Struts product, but: is there a config file? The error message is pretty clear on what it *believes* the problem to be.
Jason Vo
Greenhorn

Joined: Aug 12, 2010
Posts: 2
Strut-config.xml file is located at WebRoot/WEB-INF folder and I'm not sure why it doesn't recognize the config file. From debug, i can see this line of code throw NPE

//This method is from MockStrutsTestCase class
public ActionServlet getActionServlet() {
.....
this.actionServlet.init(config); ======> NPE happened here

}
David Newton
Author
Rancher

Joined: Sep 29, 2008
Posts: 12617

Well, I don't really know anything about the framework, but the config file appears to not be in one of the three locations it mentions, no?
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: StrutsTestCase problem