Yes, I have used cactus to test an action class. Here is some sample code.
I use it to ensure I am properly storing the correct Hostname in a member
session. (we use virtual host)
This is my first stab at it and it is not very robust, but it works.
----------------------------------
</code>
package com.planetu.upons.webserver;
import org.apache.struts.action.*;
import junit.framework.*;
import org.apache.commons.cactus.*;
public class StartActionTest
extends org.apache.commons.cactus.ServletTestCase {
private org.apache.struts.action.ActionServlet actionServlet = null;
/**
* Insert the method's description here.
* Creation date: (4/10/01 4:03:34 PM)
* @param theConnection java.net.HttpURLConnection
*/
public void beginVirtualHost(ServletTestRequest theRequest) {
theRequest.setURL("virtualhost", "/e2", "/Start", "", "");
}
/**
* Looks the output html to make sure the correct "Host Name is read
from the connection"
* Creation date: (4/10/01 4:03:34 PM)
* @param theConnection java.net.HttpURLConnection
*/
public void endVirtualHost(java.net.HttpURLConnection theConnection) {
int i = theConnection.toString().indexOf("Virtual Host");
assert("Hostname displayed as Virtual Host", i == -1);
}
public static junit.framework.Test suite() {
return new TestSuite(StartActionTest.class);
}
public void testLocalHost()
throws java.io.IOException, javax.servlet.ServletException {
actionServlet = new org.apache.struts.action.ActionServlet();
actionServlet.init(config);
ActionMapping am = actionServlet.findMapping("/Start");
StartAction sa = new StartAction();
ActionForward af = sa.perform(am, null, request, response);
Visit visit = (Visit) session.getAttribute(SESSION.VISIT);
assert("StartAcction forwards to success",
af.getName().equals("front"));
assert("localhost stored in session",
visit.getHostName().equals("localhost"));
}
public void testVirtualHost()
throws java.io.IOException, javax.servlet.ServletException {
actionServlet = new org.apache.struts.action.ActionServlet();
actionServlet.init(config);
ActionMapping am = actionServlet.findMapping("/Start");
StartAction sa = new StartAction();
ActionForward af = sa.perform(am, null, request, response);
Visit visit = (Visit) session.getAttribute(SESSION.VISIT);
assert("StartAcction forwards to success",
af.getName().equals("front"));
assert(
"virtualhost stored in session",
visit.getHostName().equals("virtualhost"));
}
}
</code>