Flow, Structural, Conditional...

One of the difficulties introducing FIT or FitNesse to teams is often helping them understand the applicability of the three core fixture table styles.

ActionFixture, RowFixture and ColumnFixture are useful as identifiers but aren't great at communicating how they are applied.

Instead, I suggest that the team think about the purpose of the test. Is it trying to communicate flow, structure or conditional characteristics.

Flow, is when you are illustrating an example of a specific flow of events. This is when sequence and intermediate assertions are relevant. An example of this is when you are following a workflow.

The test is Structural when an event occurs and the outcome is a collection of data. For example, something like the contents of an RSS feed.

The test is Conditional when given a specific combination of data, the outcome is altered. For example, if I populate a sub-set of mandatory fields, I might see a different error message for each combination of empty fields.

When it's clear, then the purpose can be mapped to a FIT table style:

  • Flow -> ActionFixture
  • Structural -> RowFixture
  • Conditional -> ColumnFixture

I've found this useful to help clarify which core table-style applies to teams adopting FIT for the first time.

Hope you find it useful too.