SourceForge Logo

Using MockServlet: online tutorial

This page will help you set up and use MockServlet.

1 - Installation

First you should download mockservlet.jar, then place it somewhere in your classpath.

There are a couple of things you have to do first.

Chances are, you already have both of them somewhere in your hard disk.

2 - Description

The core of MockServlet is a set of classes in org.chenno.mock.servlet. Each of them implements a certain servlet interface, and provides additional functionality to set test values.

MockRequest and MockResponse are the pieces you will surely need. They simulate a servlet request and response, and you use them to call doGet.

The MockRequest allows you to setParameter() and setAttribute(), as key-value pairs. They are internally stored, so when the servlet asks for them, it will retrieve the test values.

In contrast, the MockResponse is a much more passive class: you just specify the file where you want the code stored, and it will redirect to it whatever response is written.

You will probably need a MockConfig to configurate the servlet via the init() method. It has a setInitParameter() method, that adds the key-value pair to the init parameters.

The MockSession is also useful: attributes (such as auth objects) can be added at will, to match servlet necessities.

3 - Usage

We will assume you know how to use JUnit; you have created a subclass of TestCase, and are writing your testXXX() method. Otherwise, pay a due visit to the JUnit cookbook, here next door in SourceForge.

First you create your servlet just as you would any normal class:

SampleServlet servlet = new SampleServlet();

Now an optional step: initialize it with a MockConfig, passing an init parameter.

MockConfig config = new MockConfig();
config.setInitParameter("init", "value"); servlet.init(config);

Create the MockRequest, setting all the parameters you need.

MockRequest request = new MockRequest();
request.setParameter("param", "value");

The MockResponse is instantiated with the name of the file where the output page will be written:

MockResponse response = new MockResponse("output.html");

Optionally, you can set up your MockResponse without an output file; a call to toString() will retrieve the output page. Use an empty constructor for it.

MockResponse response = new MockResponse();

You will probably need some objects stored in the session. No problem: the MockSession is there exactly for that purpose.

MockSession session = new MockSession(); session.setAttribute("key", sampleObject); request.setSession(session);

Now, you're ready to call the servlet using doGet or doPost, whatever you need.

servlet.doGet(request, response);

The resulting page will be safely stored in whatever file you specified. You can read it and compare with a stored template, or whatever.

4 - Have fun!

If things aren't working for you, try joining the user list, or contacting the administrator directly. We will be proud to help you.


@version 1.0
@author Alex Fernández