In-process Web Integration Tests with Jetty and JWebUnit
Do you speak test? In that case: Hello web application:
public class WebIntegrationTest extends net.sourceforge.jwebunit.WebTestCase {
public void testIndex() {
beginAt("/index.html");
assertTextPresent("Hello world");
}
private org.mortbay.jetty.Server server;
protected void setUp() throws Exception {
server = new org.mortbay.jetty.Server(0);
server.addHandler(
new org.mortbay.jetty.webapp.WebAppContext("src/main/webapp", "/my-context"));
server.start();
int actualPort = server.getConnectors()[0].getLocalPort();
getTestContext().setBaseUrl("http://localhost:" + actualPort + "/my-context");
}
}
This code runs with no application server, no separate deployment step, just like that.
If this looks interesting, see my full-sized article on java.net
Comments:
[Kristoffer] - Jan 3, 2007
One thing worth mentioning (at least for IntelliJ users) is that if you implement tests like Johannes describes in the blog and put them into a sub-module in a multi-module Maven2 project, you will have to explicitly specify the working directory for that module when running the integration test(s). If not you will get FileNotFoundExceptions followed by HTTP 503s for whatever resource you try to hit afterwards.
[Kristoffer] - Jan 2, 2007
I can’t get the example up and running from within my favourite IDE(A) after generating the project files with mvn idea:idea because web.xml is not conformant to the Servlet 2.4 specification.
Ok, so I know this is a bit childish :) but I guess you’ve been using some other IDE of which doesn’t provide proper XSD validation(?).
Anyhow, the following fragment (slightly revised) is valid:
my /my/*
Web Development - Feb 28, 2009
i liked you article, the one on java.net, thanks for sharing all the info
Web Development - Mar 2, 2009
i guess you are using an IDE which doesn’t provide proper XSD validation
jhannes - Mar 2, 2009
Thanks for your comment. XSD validation would indeed find some of the defects (like invalid syntax in JSPs), but leave others behind (like the wrong spelling of a bean property name).
But more importantly: Discovering bugs is just one reasons to write tests. There are others, and more important ones.
Web Designer - Jun 13, 2009
I am playing around with this code to get it to work.
The link to java.net was helpfull. I will post any errors I get.
I am a noob at this :). So please bare with me.
Cartoon Bears - May 26, 2009
In general, how often should unit testing, systems integration testing, systems testing and user acceptance testing be done? The scale of the project is a construction of a web portal
Wayne Seymour - Dec 11, 2012
I do speak test, and that rocks. I speak maven too, so I’m usually starting jetty with maven for integration testing with the failsafe plugin. This looks fast. Thanks man.
Johannes Brodwall - Dec 11, 2012
Thank you for good feedback.