Executing HtmlUnit Tests
Great, you've started a Servlet
container! Now you will learn how to use this container to
execute functional tests to validate the web
subproject's WAR.
How do I do that?
First things first; write an HtmlUnit test. The purpose of this
chapter is not to teach you the intricacies of HtmlUnit (see
http://htmlunit.sourceforge.net/ for a good
tutorial). Instead, this lab will focus on how you can integrate
HtmlUnit with Maven and the Jetty plug-in. Without further ado, here's
what a test of the QuoteServlet
could look like:
package mdn.qotd.acceptance; import java.net.URL; import com.gargoylesoftware.htmlunit.WebClient; import com.gargoylesoftware.htmlunit.html.HtmlPage; import junit.framework.TestCase; public class QuoteServletTest extends TestCase { public void testMainServletPage() throws Exception { WebClient webClient = new WebClient(); URL url = new URL("http://localhost:8081/qotd-web"); HtmlPage page = (HtmlPage) webClient.getPage(url); String content = page.getWebResponse().getContentAsString(); assertTrue(content.startsWith("\"")); assertTrue(content.endsWith("\"")); } }
You will notice that an HtmlUnit test case is a JUnit test case
(it extends JUnit's TestCase
class), and this means that you can use the Maven Test plug-in to
execute it. Before doing so you need to add all of HtmlUnit's JAR
dependencies to the acceptance
subproject's project.xml:
<dependency> <groupId>htmlunit</groupId> <artifactId>htmlunit</artifactId> <version>1.3</version> </dependency> ...
Get Maven: A Developer's Notebook now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.