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.