[Opensource] How to write/run ControllerTestCase/Suite

Mike Traum mtraum at jgroup.net
Mon Mar 22 13:03:24 PST 2004


Ivan,
First off, I don't know too much about Cactus testing. Where is
ServletTestRunner coming from?

I tested
com.jcorporate.expresso.services.controller.tests.LoginControllerTest
and com.jcorporate.expresso.services.controller.tests.DBMaintTests and
they seem to work fine. Did you:
1. Uncomment the servlet definitions and servlet mappings for
ServletRedirector and JspRedirector in web.xml?
2. Set the correct cactus.contextURL (which would be
('http://localhost:8080/emaria' in your case) in cactus.properties in
the root of your WEB-INF/classes
3. Start mysql & Tomcat (or whatever your servlet container is)
4. Run your ControllerTest under JUnit (I use Eclipse as my IDE, and I
can do this directly from Eclipse - I assume IntelliJIdea has similar
capability)

Try it on LoginControllerTest and DBMaintTests and let us know the
results.

mike

On Fri, 2004-03-19 at 05:02, Ivan Ivanov wrote:
> 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
> 
> _______________________________________________
> Opensource mailing list
> Opensource at jcorporate.com
> http://mailman.jcorporate.com/mailman/listinfo/opensource
-- 

Mike Traum
--
JGroup Expert 
Expresso Core Developer 
Providing support and development services - Available Now!



More information about the Opensource mailing list