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
This work is licensed under a
Creative Commons Attribution 3.0 License.
Print This Post
Kristoffer Said,
January 2, 2007 @ 07:09
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:
<servlet-mapping>
<servlet-name>my</servlet-name>
<url-pattern>/my/*</url-pattern>
</servlet-mapping>
Kristoffer Said,
January 2, 2007 @ 08:09
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:
<servlet-mapping>
<servlet-name>my</servlet-name>
<url-pattern>/my/*</url-pattern>
</servlet-mapping>
Kristoffer Said,
January 3, 2007 @ 07:04
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 Said,
January 3, 2007 @ 08:04
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.
Arnljot.com » Bark and CubicTest Said,
January 10, 2007 @ 01:10
[...] Christian and I spoke of a few things, mostly how it would be interesting to run the Watir ruby scripts in JRuby inside CubicTest to get a tighter integration allowing the ruby scripts to directly report results to CubicTest. And we also discussed how exporters are made since I might be interested in writing a JWebUnit exporter considering this article about integration of Jetty and JWebUnit. [...]
Web Development Said,
February 28, 2009 @ 05:44
i liked you article, the one on java.net, thanks for sharing all the info
Web Development Said,
March 2, 2009 @ 04:55
i guess you are using an IDE which doesn't provide proper XSD validation
jhannes Said,
March 2, 2009 @ 15:33
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.
Cartoon Bears Said,
May 26, 2009 @ 12:02
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
Web Designer Said,
June 13, 2009 @ 09:41
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.