BDD (Behaviour-Driven Development) is about designing code by defining your application in terms of behavior.
You start by gathering Tester, Developer and Product Owner (The Three Amigos) and define User Stories. These User Stories are given a Feature name and each Feature is broken down into a Scenario with Steps defines with the keywords: Given, When and Then
Now in Cucumber you write your User Stories (=Feature) in a language called Gherkin. Example:
Feature: Cash withdrawal Scenario: Withdrawal from an account in credit Given I have deposited $100.00 in my account When I withdraw $20 Then $20 should be dispensed
Cucumber Code Structure
All code (production code, test code and gherkin code) must be placed in the same catalog structure.
- Production Code - src/main/java/se/magnuskkarlsson/examples/cucumber/Account.java
- Test Code - src/test/java/se/magnuskkarlsson/examples/cucumber/AccountTest.java
- Test Code - src/test/java/se/magnuskkarlsson/examples/cucumber/AccountSteps.java
- Gherkin Code - src/test/resources/se/magnuskkarlsson/examples/cucumber/cash_withdrawal.feature
Cucumber Test Code
We need two classes: one JUnit wrapper class and one Cucumber class that implements the steps in your Gherkin Code.
You can now either run you JUnit test class AccountTest inside your IDE or run complete test from command line as usual in maven: mvn clean install.