Commenting Functional Tests Comments

Date:

A few nice people commented on my posts on functional tests and suggested a few other alternatives:

  • Canoo Webtest. It’s XML-based which makes it go right out my window. Sorry about that. We are a small company where programmers have to do their share of test time. This means that we are not afraid of code, in fact we prefer it.
  • Jameleon. I had not seen this one, but looking at the tutorial it seems a lot more complex than the stuff we use now.
  • PureTest. This is a very competent scenario recorder/player, and I do like the guys at Minq. But as I stated earlier, recording HTTP will not test your page the way HttpUnit does with JavaScript and all.

I am truly happy with the way we do it now. We have a base testcase class that provides methods like clickButton(). These methods are implemented as Strategies by both a remote HTTP implementation and a local in-process mock implementation.

Writing the tests are really easy. All you have to do is:

#java

public void testLoginWithCorrectNameSucceeds() {
  goto("/login)";
  setFormText("Name", "foo");
  setFormTest("Password", "foo");
  clickButtonWithName("Login");
  assert
}

After a while you can start pushing common higher level functions such as login to the base class for easier reuse.

Since we use a object oriented web API all test fields with labels are rendered in the same way. This means that we can find the form by the labe which is a good thing, since it eliminates the need for artificial id’s.