Frequently Asked Questions


Questions about versions, licensing and distribution.

Q: Where can we download this version of Wiki?

I plan to overhaul once this open source publishing effort quiets down. I'll reconcile the WikiServer mods I've made here with that code base. The slickest trick is just the run.cgi script with will work with any web server.

Q: The GPL scares our lawyers. Would you consider something else?

I'm happy with the viral properties of the GPL because it makes sure your investment in fit tests is protected even when you use forks like Fitnesse. Tell your lawyers that using Fit is a wise business decision because you face more risk from bad software than from us suing you. See GplInRetrospect.

Questions about capabilities and usage.

Q: Does the framework require an app written in Java?

No. Tests are written in html tables by a variety of means, including WikiTables. Currently it requires a fixture written for one of the platforms listed on the DownloadNow page. The fixture can do what ever it wants, even things like SOAP.

Q: Can I store my tests in XML?

Sure. The parser looks for table, tr and td tags so if you can get XML to uses these tags it might work. Or you can tell the parser what tags you do use and let it look for them. Or you could render your XML as html before feeding it into our framework.

Q: Can I test programs that produce large results, like whole web pages?

Yes. Think of your fixture as a results analyzer and the particulars specificed in the test table to be expected results of the analysis, not results of your program. See WebPageExample where we have done exactly this using fit's parser to analyze web pages.

Q: How would one perform stress tests?

Of course there are many kinds of stress. The general strategy is to characterize the stress and the expected performance expected under that stress then build a fixture that can create the stress and measure the performance. See examples in StressTesting.

Questions about running Fit

Q: How do I run the .NET version of Fit with .NET 2.0?

Fit is compiled with .NET v1.1. You can use a config file to tell .NET that Fit works with 2.0 as well. Here is one example. You'll have to change the specific 2.0 version number to match your version--at the time of this writing, the final version of .NET 2.0 wasn't out yet.

 <?xml version="1.0" encoding="Windows-1252"?>

<!-- These statements specify the runtime versions supported in the order that they will be used if more than one is present. You can change the order of these if you like or remove any that do not apply.

Since .NET 1.0 does not recognize the <supportedRuntime> elements, a <requiredRuntime> element is used in case it is the only version of the framework that is installed. -->

<startup> <supportedRuntime version="v2.0.50215" /> <supportedRuntime version="v1.1.4322" /> <supportedRuntime version="v1.0.3705" />

<requiredRuntime version="v1.0.3705" /> </startup>


Save this as "runFile.exe.config" in the same directory where you keep Fit's runFile.exe.

Questions about troubleshooting.

Q: Why do I get broken image icons in my html reports?

The broken image means your browser could not find an image referred to by the html. Make sure all images in your documents are stored in a location equally accessible to both the original document and the annotated copy made by the framework. In a batch environment you may find it convenient to just copy images with a command like: mv Documents/*.gif Documents/*.jpg Reports

Q: Why do some cells stay white when I expect red or green?

Only results that are actually checked are colored red or green (or yellow or gray). It is possible that your html input file already specifies a background color and that this is interfering with the framework's ability to change the background color. Look for more than one BGCOLOR attribute on the table data (<td>) tag.

Questions about programming fixtures.

Q: How do I use a custom type in my ColumnFixture?

Let's assume that you're implementing a Money class to use in a column fixture. There are three steps:

1) Support converting the object to a string

2) Support converting a string to the object

3) Use the object in the fixture.

In Java, it works like this:

1) Implement "public string toString()" on Money.

2) Implement a method to parse strings on Money, such as "public static Money parse(string s)". Then override the "parse" method in your fixture and call your parse method:

  public Object parse(String s, Class type) throws Exception {
    if (type.equals(Money.class)) return Money.parse(s);
    return super.parse(s, type);

3) Now you can use that class in that one fixture without additional effort:

  public class MyFixture extends ColumnFixture {
    public Money in;
    public Money out() {
      return new Money(42);

public Object parse... }

In C#, it works like this:

1) Implement "public string ToString()" on Money.

2) Implement "public static Money Parse(String s)" on Money.

3) Now you can use that class in your fixtures without additional effort:

  public class MyFixture : ColumnFixture {
    public Money in;
    public Money out() {
      return new Money(42);

In Ruby, it works like this:

1) Implement "to_s()" on Money.

2) Implement a method to parse strings on Money, such as "def Money.parse(string)". Then override the parse method on your fixture and call the parse method of the domain object:

  def parse string, klass
    return Money.parse(string) if klass == Money

3) Now you can use that class in fixtures without additional efforts. Don't forget to add proper metadata!

  class MyFixture < Fit::ColumnFixture
    @@metadata = { 'in' => Money, 'out' => Money }
    attr_accessor :in
    def out 42
    def parse string, klass
      # ...


Last edited December 15, 2008
Return to WelcomeVisitors