[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