Given-When-Then


Given-When-Then is a semi-structured way to write down test cases. They can either be tested manually or automated as browser tests with tools like Selenium and Cucumber.
It derives its name from the three clauses used, which start with the words given, when and then. Given describes the preconditions and initial state before the start of a test and allows for any pre-test setup that may occur. When describes actions taken by a user during a test. Then describes the outcome resulting from actions taken in the when clause.
The Given-When-Then was proposed by Dan North in 2006, as part of behavior-driven development.

Example

A Given-When-Then test case for a hypothetical inventory software could be structured as follows:

GIVEN that the inventory contains 10 units of steel
AND the inventory contains 30 units of copper
WHEN we consume 2 units of steel
AND we consume 10 units of copper
AND we purchase 5 units of steel
THEN the inventory should contain 13 units of steel
AND the inventory should contain 20 units of copper
AND the purchase of 5 units of steel should be registered in the expenses list