Forewords

As is stated on the Cactus goals page, the intention is to explore as much as possible in the realm of unit testing of server side java code ...

This brings a bad news and a good one ... The bad one is that the TODO list is likely to keep growing or at least have a respectable size ... The good one is that there will be work for everyone ... :-)

If you are interested in participating, send an email on the Cactus mailing list stating your interest and you'll be enrolled right away ... We're always looking for help ! Don't be put off if in the "Volunteer" column there is already a person listed. On the contrary, the more person that participate in a given task, the better (like in pair programming, several sets of eyes are always better than one!). However you'll need to sync. with these others persons but this is easily done by posting to the mailing-list.

The game has just begun ... !

Undefined

Documentation

DescriptionVolunteers
Fix problems in changes.xml XSL stylesheet transformation so that HTML elements are not stripped (such as the <p> elements we have there).
Update the "how it works" section by adding the new global begin() and end() methods.
Add documentation for form-based authentication. Jason Robertson, Vincent Massol
Improve the documentation CheckSitemap Ant task to check external URLs (when online).

Build Process

DescriptionVolunteers
Fix the nightly Gump build so that the changes page get generated with the CVS changelog information. ATM, it's always empty which negates this nice feature...
Prevent the sample jetty project from building if the J2EE API is 1.2.
Add a Gump definition for building the Eclipse Site project and only released an installed Eclipse update web site (no zips). Same as what is on http://dev.eclipse.org/viewcvs/indextech.cgi/~checkout~/org.eclipse.ajdt/download.html.
Move Cactus to Maven. Jason Van Zyl
Add support in Ant Integration for JBoss/Tomcat (JBoss/Jetty is supported).
Add support in Ant Integration for the J2EE RI.

Design/Code

DescriptionVolunteers
Modify the Eclipse plugin to use the new Ant integration.
Enhance the runservertests task to accept nested <containerset> elements.
Add an EJB sample application to demonstrate how to perform EJB unit testing. Hudson Wong, Vincent Massol
Add test case for form-based authentication. Jason Robertson, Vincent Massol
Improve the ServletTestRunner: look at ways to make it run without the permission to set system properties. Christopher Lenz
Continue the JMS Redirector/Client to test Message Driven Beans.
Add support for Servlet API 2.4/JSP 2.0 (by using Resin 3, Tomcat 5).
Potentially replace access to instance variables of redirectors by method calls. For example, replace "request.xxx()" by "getHttpServletRequest().xxx()". Deprecate the direct access. Needs to be discussed on cactus-dev.
Add support for multi-concurrent Cactus tests. This involves storing each test result under a unique key in the application scope.
Improve support for the JUnitReport XML format so that the Ant-provided junit-noframes.xsl XSL is completely supported. ATM, some sections appear blank.
Add EJB Redirectors so that unit testing of code that require an EJB is facilitated. For example, let's imagine you need to test that an object that has been put in the JNDI tree by a servlet can be retrieved by an EJB. These are not unit tests per see but rather integration tests, which is Cactus favorite domain. Also these redirectors could be used to directly unit tests EJB whithout requiring a servlet environment (at the current time, you need to call your EJB from a Servlet/JSP/Filter Redirector, which is fine for certain tests but not needed for others.
Explore ways to improve the performance and design of the HTTP transport. Currently, each test invocation involves a new connection to the server. The HTTP/1.1 Keepalive feature could be used to reuse a single connection for all test invocations. Responses to the GET_RESULTS request do not need to include a body if there was no exception on the server-side. Possibly use custom HTTP headers to communicate the Cactus service parameters such as the name of the test class and method, instead of using query string parameters. Christopher Lenz

Ideas

Ideas to explore ...

DescriptionVolunteers
Add performance extensions to be able to test each single method in performance: response time. Need to add notion of server time in cactus XML response. And need extensions (probably TestSuite extensions to repeat each test or start several threads). Idea initially suggested by Michael Rimov. Integrate JUnitPerf.
Use XDoclet with Cactus to better provide continuous integration. It could be used to automatically generate web.xml files, automatically generating test cases from methods to test, ...
Add tutorial on Cactus and AOP unit testing (using AspectWerkz for example). Also research adding a Cactus Aspect extension to allow writing test cases as Aspects (this would allow to remove the need for Cactus redirectors in most cases).
Help Cactus users test multipart/form-data. At least explain how to do it. Libraries to help on the server-side include cos.jar and Commons FileUpload. Then we still need to provide a mechanism to easily send multipart/form-data on the Cactus client side. The best solution would be to use HttpClient but we are currently not exposing the HttpClient API so that it could be used in a test. Submitted by Gunnar Ole Skogen.
Provide a full servlet container test suite a la Watchdog using Cactus

Eclipse Plugin

DescriptionVolunteers
Ability to leave the server running after the test is finished so that we don't need to start it again for the next test (needs hot redeploy)
Separate the container start/stop/deploy feature in a separate plugin
Automate tests on the plugin
"cactify" should check if the jars it adds are already in the project build path before adding them