I have just released the newest version of SmalltalkFit, a Visualworks Smalltalk implementation of Ward Cunningham’s Framework for Integrated Tests, Fitnesse, and Rick Mugridge’s FitLibrary.

Fit is a tool for writing acceptance tests (integration tests/examples/executable specifications/whatever you want to call them). In Fit, the tests are written in HTML. Special effort was made to ensure that the customer/product owner could write the tests in Microsoft Word and then save as HTML.

Fitnesse expanded on the concept by wrapping a wiki around Fit. That way, the tests could be written and executed from a web page.

In either case, the tests appear in specially formatted tables which are then interpreted by “fixturing code” written in your programming language of choice. The fixturing code calls the domain code under test, returning results that are then used to mark up the test tables to show passing or failing tests.

FitLibrary adds more options for fixturing code and table structures.

SmalltalkFit allows you to write the fixturing code and domain code in Visualworks Smalltalk.

This version of SmalltalkFit includes the equivalent features of Fit Java 1.1, Fitnesse 20121220, and FitLibrary 2.0. It does not (yet) include a port of Fitnesse Slim.

One of the things that’s always intrigued me about Fit is that it allows the executable specifications to be written in a programming-language-independent way. The fixturing code acts as a shearing layer. When porting a project to a new language or environment, the same specifications can be used to verify the ported functionality. This makes the specifications a very valuable asset, as they can outlive any particular implementation of the system.

SmalltalkFit’s primary home is the Cincom Public Store Repository. Check there for the latest version. I’ve also put a snapshot of the current version of SmalltalkFit on GitHub. The Readme file on GitHub includes high-level documentation of SmalltalkFit if you’d like more information before diving in.

SmalltalkFit was developed in VW 7.9.1, but is intended to be compatible with VW 7.7 and later.

Because the original Fit and FitLibrary implementations are licensed under the GPL v2, I must also license SmalltalkFit under the same license. I realize that the GPL license is complicated when applied to Smalltalk. I’ve included a statement about how I intend for the GPL to apply to SmalltalkFit in the README.