[Opensource] How to write/run ControllerTestCase/Suite
Ivan Ivanov
rambiusparkisanius at yahoo.com
Fri Mar 19 03:02:14 PST 2004
Dear colleagues,
Currently I am tring to write and run some test for my
expresso based application (expresso version is
expresso5-3-RC6 under tomcat 4.1.18 with mysql
4.0.17). For simplicity I concentrated on writing and
running only one ControllerTestCase with only one test
method, which was written according to the expresso
docs:
public class AdministrativeControllerTest extends
ControllerTestCase {
public AdministrativeControllerTest(String
testName) throws Exception {
super(testName,
AdministrativeController.class);
System.out.println("AdministrativeControllerTest::<init>:test
constructed");
}
public void beginAddUserState(WebRequest request)
throws Exception {
System.out.println("AdministrativeControllerTest::beginAddUserState:setting
request parameters");
System.out.println("AdministrativeControllerTest::beginAddUserState:logging
in");
//super.logIn(request, "EmrAdmin", "emr123");
super.logIn(request);
super.setupParameters("addUser", request);
}
public void testAddUserState() throws Exception,
ServletException, IOException {
System.out.println("AdministrativeControllerTest::beginAddUserState:beginning
addUser test");
ControllerResponse response =
super.controllerProcess();
System.out.println("AdministrativeControllerTest::beginAddUserState:
title is" + response.getTitle());
}
public void endAddUserState(WebResponse response)
{
System.out.println("AdministrativeControllerTest::endAddUserState:
addUser test finsihed");
}
public static TestSuite suite() throws Exception {
System.setProperty("junit.argv.webAppDir",
"/usr/java/tomcat4/webapps/emaria");
System.setProperty("junit.argv.configDir",
"/usr/java/tomcat4/webapps/emaria/WEB-INF/config");
ControllerTestSuite cts = new
ControllerTestSuite();
cts.addReadOnlySchemaDependency(ExpressoSchema.class);
cts.addReadOnlySchemaDependency(EMariaSchema.class);
cts.addTestSuite(AdministrativeControllerTest.class);
System.out.println("AdministrativeControllerTest::suite:suite
constructed");
return cts;
}
public static void main(String[] args) throws
Exception {
System.out.println("AdministrativeControllerTest::main:suite
will be invoked");
TestRunner.run(suite());
}
}
I compile it, startup Tomcat, ensure myself that mysql
is running :)) and run this test. I run it either from
IDE (IntelliJIdea) or from my browser
(http://localhost:8080/emaria/ServletTestRunner?suite=bg.unisofia.emaria.controller.AdministrativeControllerTest)
and receive in both cases the following errror:
testAddUserState(bg.unisofia.emaria.controller.AdministrativeControllerTest)java.lang.NullPointerException
at
com.jcorporate.expresso.services.test.ControllerTestCase.controllerProcess(ControllerTestCase.java:267)
at
bg.unisofia.emaria.controller.AdministrativeControllerTest.testAddUserState(Unknown
Source)
at
sun.reflect.NativeMethodAccessorImpl.invoke0(Native
Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at
org.apache.cactus.internal.server.ServerTestCaseDelegate.runServerTest(ServerTestCaseDelegate.java;org/apache/cactus/util/log/LogAspect.aj[1k]:214)
at
org.apache.cactus.ServletTestCase.runTest(ServletTestCase.java:280)
at
org.apache.cactus.ServletTestCase.runBare(ServletTestCase.java:251)
at
org.apache.cactus.server.AbstractWebTestCaller.doTest(AbstractWebTestCaller.java:156)
at
org.apache.cactus.server.AbstractWebTestController.dispatch133_handleRequest(AbstractWebTestController.java;org/apache/cactus/util/log/LogAspect.aj[1k]:130)
at
org.apache.cactus.server.AbstractWebTestController.around133_handleRequest(AbstractWebTestController.java;org/apache/cactus/util/log/LogAspect.aj[1k]:1158)
at
org.apache.cactus.server.AbstractWebTestController.handleRequest(AbstractWebTestController.java;org/apache/cactus/util/log/LogAspect.aj[1k]:101)
at
org.apache.cactus.server.ServletTestRedirector.dispatch160_doPost(ServletTestRedirector.java;org/apache/cactus/util/log/LogAspect.aj[1k]:125)
at
org.apache.cactus.server.ServletTestRedirector.around160_doPost(ServletTestRedirector.java;org/apache/cactus/util/log/LogAspect.aj[1k]:1158)
at
org.apache.cactus.server.ServletTestRedirector.doPost(ServletTestRedirector.java;org/apache/cactus/util/log/LogAspect.aj[1k]:109)
at
org.apache.cactus.server.ServletTestRedirector.dispatch159_doGet(ServletTestRedirector.java;org/apache/cactus/util/log/LogAspect.aj[1k]:96)
at
org.apache.cactus.server.ServletTestRedirector.around159_doGet(ServletTestRedirector.java;org/apache/cactus/util/log/LogAspect.aj[1k]:1158)
at
org.apache.cactus.server.ServletTestRedirector.doGet(ServletTestRedirector.java;org/apache/cactus/util/log/LogAspect.aj[1k]:92)
at
javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
at
javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at
org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2415)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at
org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at
org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:594)
at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:392)
at
org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:565)
at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:619)
at java.lang.Thread.run(Thread.java:536)
I do not know how to deal with this NullPointer error
so I will be very gratefull if you help me. I also
plan to write an ant test target in my build.xml for
fully automated testing and if it is suitable I can
write addition to the corresponding part of expresso
docs about it.
Regards Ivan Ivanov
__________________________________
Do you Yahoo!?
Yahoo! Mail - More reliable, more storage, less spam
http://mail.yahoo.com
More information about the Opensource
mailing list