Behaviour != Test : on va plus loin qu’un simple technique, on parle du comportement attendu
public class CustomerLookupTest {
void testFindCustomerById() {
// check if CustomerLookup get a customer by its id
}
void testFailsForDuplicateCustomers() {
// check if it fails if customer is duplicated
}
// other tests
}
public class CustomerLookupBehaviour {
void shouldFindCustomerById() {
// check if CustomerLookup get a customer by its id
}
void shouldFailsForDuplicateCustomers() {
// check if it fails if customer is duplicated
}
// other tests
}
Test ➡ Should
➡
Given : Étant donné un contexte initial
When : Lorsqu'un événement survient
Then : On s'assure de l'obtention de certains résultats
Langage (utilisé dans la plupart des outils BDD) ayant un vocabulaire commun entre le métier de développeur et fonctionnel.
Il permet de créer des features, et de décrire des scénarios.
Fonctionnalité que l'on cherche à décrire, avec un titre et une
description qui seront utilisées pour la documentation.
Le format est totalement libre, ce qui laisse la possibilité de décrire la fonctionnalité
sous la forme d'une user story
Elle contient un ou plusieurs scénarios
Feature: Serve coffee
In order to earn money
Customers should be able to
buy coffee at all times
Scenario: Buy last coffee
Given there are 1 coffees left in the machine
And I have deposited 1 dollar
When I press the coffee button
Then I should be served a coffee
Exemple d'un cas d'utilisation représentatif d'une fonctionnalité, utilisant la syntaxe Given - When - Then
Scenario: Wilson posts to his own blog
Given I am logged in as Wilson
When I try to post to "Wilson's Blog"
Then I should see "Your article was published."
Scenario: Wilson fails to post to somebody else's blog
Given I am logged in as Wilson
When I try to post to "Greg's Blog"
Then I should see "Hey! That's not your blog!"
Gherkin offre la possibilité de templatiser un scénario pour faciliter l'écriture et éviter la duplication de scénarios
Scenario Outline: Eating
Given there are <start> cucumbers
When I eat <eat> cucumbers
Then I should have <left> cucumbers
Examples:
| start | eat | left |
| 12 | 5 | 7 |
| 20 | 5 | 15 |
BDD va quand même plus loin, bien qu'elle reste fortement liée à TDD
Doing the thing right
Doing the right thing
BDD est une méthode à la fois organisationnelle et technique.
Â
Â
Nous n'aborderons que la partie technique dans la suite du BBL
Pour plus d'infos sur les aspects organisationnels :
Rôle : faire le lien entre les scénarios Gherkin et du code
Â
Langages supportés :
Outil de living documentation : transforme les fichiers contenant les scénarios en documentation qui fait office de spécification toujours à jour
Â
Format supportés :
Slides & code :