FitNesse

SegregationOfRequirementsAndImplementation

Included page: .FitNesse.SuiteAcceptanceTests.ScenarioLibrary (edit)

scenario given page page with content content
create page @page with content @content
$IT= echo @page

scenario given page page
given page @page with content nothing

scenario given test page page
given page @page
make @page a test page

scenario given slim test page page
given page @page with content !define TEST_SYSTEM {slim}
make @page a test page

scenario page source should have link to target
check request page @source 200
ensure content contains <a href="@target"
$IT= echo @source

scenario it should have link to target
page $IT should have link to @target

scenario and it should have link to target
page $IT should have link to @target

scenario page source should have creating link to target
check request page @source 200
ensure content contains @target<a title="create page" href="@target?edit&nonExistent=true">[?]</a>

scenario it should have creating link to target
page $IT should have creating link to @target

scenario page source should contain text
check request page @source 200
ensure content contains @text
show content

scenario page source should not contain text
check request page @source 200
reject content contains @text
show content

scenario page source should match text
check request page @source 200
ensure content matches @text
show content

scenario it should contain text
page $IT should contain @text

scenario it should not contain text
page $IT should not contain @text

scenario it should contain text in line symbol
check request page $IT 200
$@symbol= line number containing @text

scenario it should match text
page $IT should match @text

scenario test results for page source should contain text
check request page @source?test 200
ensure content contains @text
show content

scenario its test results should contain text
test results for page $IT should contain @text

scenario test ressults for page source should not contain text
check request page @source?test 200
reject content contains @text
show content

scenario and should contain text
ensure content contains @text
show content

scenario and should match text
ensure content matches @text
show content

scenario and should not contain text
reject content contains @text
show content

scenario widget wikiText should render htmlText
create page WidgetPage with content @wikiText
check request page WidgetPage 200
ensure content matches @htmlText
show content

scenario the line after should come after before
check echo int $@before < $@after

scenario pass
check echo pass pass

Included page: .FitNesse.SuiteAcceptanceTests.SuiteSlimTests.SetUp (edit)

Included page: <SuiteAcceptanceTests.SetUp (edit)

Import
fitnesse.fixtures

SetUp

Library
page driver
echo fixture

One of the key goals of FitNesse is to encourage that requirements in FitNesse are written before the coding of the implementation starts.
Having said that the defintion of the requirements must be independent of the technical solution used to implement it.
This sample page shows that the same requirement defintion can be implemented once with a java class implementing the decision table protokoll and once with a senario.


The requirements are defined in a decision table on a sub page.
The first implementation used is the Devision class from the eg library.
import
eg

Included page: >CalculatorRequirements (edit)

Division
numerator denominator quotient?
10 2 5.0
12.6 3 4.2
22 7 ~=3.14
9 3 <5
11 2 4<_<6
100 4 25.0
25.0 5 5.0


Now we define a second technical solution using a FitNesse scenario
scenario Division _ _ _ numerator, denominator, quotient
setNumerator @numerator
setDenominator @denominator
check quotient @quotient


Generate an instance of the class used by the scenario:
Library
eg.Division

script Division


We retest the requirements and get the same results.
Also the output is differently printed.

Included page: >CalculatorRequirements (edit)

Division
numerator denominator quotient?
10 2 5.0
12.6 3 4.2
22 7 ~=3.14
9 3 <5
11 2 4<_<6
100 4 25.0
25.0 5 5.0

Included page: .FitNesse.SuiteAcceptanceTests.TearDown (edit)



tear down

Keyboard Shortcuts ?

×
  • t Test
  • e Edit page
  • a Add new page
  • p Properties
  • w Where used?
  • / Focus on search bar
  • s Open search page
  • g u Go to User Guide