![]() | ![]() |
| Apache > Jakarta > Cactus > Running Tests > Manual | Docs for: v1.6dev | v1.5 Last update: April 16 2004 |
Cactus Configuration
This tutorial is only useful if you wish to manually configure Cactus.
Most of the time this is not required. Rather you should choose a
Cactus integration (Ant, Maven, Browser, etc) and follow the
instructions there.
Here are the configuration files used to configure Cactus manually: ![]() There are 3 kinds of configuration: Cactus configuration works by setting Java System properties. You can set the Cactus configuration properties:
Please note that the different options for configuring Cactus works
both for Cactus client side (i.e. from where you start the JUnit Test
Runner) and for the Cactus server side (i.e. from where you start your
application server).
Client side configurationThe following table lists the properties that can be defined on Cactus client side:
Server side configuration
On Cactus server side, you only need to properly configure your
application
You need to register the Cactus Redirectors that you use, and you
need to map them to the
Here is a sample
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/j2ee/dtds/web-app_2_3.dtd">
<web-app>
<filter>
<filter-name>FilterRedirector</filter-name>
<filter-class>org.apache.cactus.server.FilterTestRedirector</filter-class>
</filter>
<filter-mapping>
<filter-name>FilterRedirector</filter-name>
<url-pattern>/FilterRedirector</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>ServletRedirector</servlet-name>
<servlet-class>org.apache.cactus.server.ServletTestRedirector</servlet-class>
</servlet>
<servlet>
<servlet-name>JspRedirector</servlet-name>
<jsp-file>/jspRedirector.jsp</jsp-file>
</servlet>
<servlet-mapping>
<servlet-name>ServletRedirector</servlet-name>
<url-pattern>/ServletRedirector</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>JspRedirector</servlet-name>
<url-pattern>/JspRedirector</url-pattern>
</servlet-mapping>
</web-app>
If you are using the JSP Redirector (i.e. you have test classes
that extend
JspTestCase), you must
copy the jspRedirector.jsp file (found in the
sample/web directory where you unpacked your
Cactus distribution) in a directory in your webapp and you need to
put its relative path in the mapping defined above (here we
have put it in the webapp root.
If you want to provide some initialisation parameters that will
be available to the For example, for the Servlet Redirector (same principle applies to all other redirectors):
[...]
<servlet>
<servlet-name>ServletRedirector</servlet-name>
<servlet-class>org.apache.cactus.server.ServletTestRedirector</servlet-class>
<init-param>
<param-name>param1</param-name>
<param-value>value1 used for testing</param-value>
</init-param>
</servlet>
[...]
Within your
testXXX() code, you can also call the
config.setInitParameter() method (config
being the implicit object of type ServletConfig) to
simulate initialisation parameters as if they had been defined in
your web.xml.
Last, if you need to unit test code that uses the Servlet Security API, please check the Security Howto. Cactus logging configurationSince Cactus 1.4, we have switched to using the Jakarta Commons Logging framework for Cactus internal logs (and any log you may wish to output as part of your test). This allow Cactus to use any underlying logging framework such as: Log4J, LogKit, JDK 1.4 Logging or even a Simple Logger provided as part of Commons Logging (it outputs to the console). Cactus is completely agnostic with regards to the logging framework configuration, so you will have to learn how to configure your favorite logging yourself. However, here are some tips on how to easily configure Log4j. Log4J configuration
Create a
Now you need to add the categories that you want to log to that
file. If you wish to see Cactus logs, you will need to add the
"
Here is a sample
# Properties for configuring Log4j
# This is the configuring for logging on the JUnit side (i.e. the client side)
log4j.appender.cactus = org.apache.log4j.FileAppender
log4j.appender.cactus.File = cactus_client.log
log4j.appender.cactus.Append = false
log4j.appender.cactus.layout = org.apache.log4j.PatternLayout
log4j.appender.cactus.layout.ConversionPattern = %d{ABSOLUTE} [%t] %-5p %-30.30c{2} %x - %m %n
# Any application log which uses Log4J will be logged to the Cactus log file
log4j.rootCategory=DEBUG, cactus
# By default we don't log at the DEBUG level for Cactus log, in order not to generate too
# many logs. However, should a problem arise and logs need to be sent to the Cactus dev team,
# then we will ask you to change this to DEBUG.
log4j.category.org.apache.cactus = WARN, cactus
log4j.additivity.org.apache.cactus=false
# Don't show debug logs for HttpClient
log4j.category.org.apache.commons.httpclient = WARN, cactus
log4j.additivity.org.apache.commons.httpclient=false
log4j.category.httpclient = WARN, cactus
log4j.additivity.httpclient=false
JUnit uses a different classloader to load each test of a TestCase
class. Thus, Log4j will reinitialise for each test, thus
overwriting the
cactus_client.log file each time (this
is because we have set log4j.appender.cactus.Append to
false. You can set it to true if you
wish to keep all the logs but the file size will grow quickly. In
addition logs are really only useful when there is a failure and
thus not appending is usually a good choice.
|