XNSIO
  About   Slides   Home  

 
Managed Chaos
Naresh Jain's Random Thoughts on Software Development and Adventure Sports
     
`
 
RSS Feed
Recent Thoughts
Tags
Recent Comments

To FitNesse or Not to FitNesse!

Background:
According to the FitNesse website, FitNesse is a fully integrated standalone wiki, and acceptance testing framework.

In simple words, FitNesse is essentially a wiki wrapper for FIT. FitNesse uses Ward Cunningham‘s FIT, which is the engine that actually runs the acceptance tests. The FitServer which comes with FitNesse, interfaces with FIT by converting all the wiki pages to HTML tables and passing them to the WikiRunner. FitNesse is not just limited to running only Java tests. Given an implementation of FIT and the corresponding FitServer, FitNesse can execute tests in any language.

As per the website, following languages have FIT/FitServer implementations.

  • Java : Included in the FitNesse.jar.
  • .NET : Included in the standard FitNesse distribution.
  • C++ : C++ FIT and FitServer
  • Delphi : Delphi FIT and FitServer
  • Python : Python FIT and FitServer
  • Ruby : Ruby FIT and FitServer
  • Smalltalk : Visual Works Smalltalk FIT and FitServer
  • Perl : Perl FitServer

Topic of the blog:
I have been using FitNesse for about 2 months now. FitNesse has a simple but not elegant wiki interface. [Well, it‘s not meant to be a full fledge fancy wiki]. But I‘m using it as a project wiki as well.

I must admit that I‘m pretty satisfied with FitNesse.
Reasons:
1. It has a decent menu on the left hand, which helps you declare a wiki page as a Test or a Test Suite. This means you can click one button on this menu and run any test or the whole suite.
2. It‘s very easy to download and install. Just a zip file which we need to unzip. There is a run.bat file, which needs the JAVA_HOME to be set. Double click the run.bat file, and you have FitNesse running on the specified port. [There is a bunch of simple command line arguments which can come very handy]
3. You can define a hierarchy of pages prefixing the link with ^ [caret character]. This hierarchy of pages is very useful when you want to organize the tests and run them together as a suite.
4. Classpath and other properties are pretty simple to setup. One needs to go to the root page and add them on this page. [http://localhost:8080/root]
5. It has a css file, which can be used to define custom format attributes.
6. Has a simple mapping of the pages to the file system. Under the FitNesse installation folder, there is a folder called FitNesseRoot, which will contain a folder per page created under the root folder. Each of these folders would contain a content.txt and properties.xml file. The content.txt file contains the actual contents of the page. The properties,xml file defines what menu buttons should be shown on the page. So it‘s pretty configurable.

Some pain points that I ran into with FitNesse are:
1. I want a good automatically backup strategy. It is a bit painful to just backup the whole FitnessRoot folder. I want a different backup strategy for the fixtures and the rest of the pages. FitNesse also contains a lot of backup zip file. Everytime, I change any page on the wiki, FitNesse zips up the contents.txt and the properties.xml file, before making any change. If you have lots of changes been done to the wiki there might be a huge number of these backup zip files.
2. Any wiki is not good at handling concurrent changes. I want to be able to manage concurrent changes with features like visual merge and rollbacks.
3. I want some kind of a configuration management on the tests. One should be able to tag the FitNesse fixtures against a build version and be able to keep it together with the build. FitNesse does not have a direct integration with the version control system I‘m using. [Might be a good idea to write a plugin]
4. Currently FitNesse comes with a build in web server. I‘m not aware of any easy way of pulling the fit server and wiki out and running it on any web server of our choice.
5. The CruiseControl war does not work with FitNesse. It needs another web container to run. It kind of gets annoying having so many web servers running on the build machine.

At this point I‘m trying to do all kinds of wacky stuff to get around these. Eventually I might just plan to throw out FitNesse and just go with simple FIT. There are a lot of alternatives for the wiki part of FitNesse. So breaking them up into a separate project wiki and a bunch of html files for FIT and maintaining them differently seems to make more sense.


    Licensed under
Creative Commons License