GivenWhenThen

Original: http://martinfowler.com/bliki/GivenWhenThen.html

 

 

Martin Fowler

21 Août 2013

Compte tenu deWhen-Then est un style de représentant les essais ou que ses défenseurs se dire en précisant le comportement d’un système à l’aide SpecificationByExample. Il est une approche développée par Dan North et Chris Matts dans le cadre de Behavior-Driven Development (BDD). [1] Il apparaît comme une approche structurante pour de nombreux frameworks de tests comme le concombre. Vous pouvez aussi regarder comme une reformulation du modèle de test en quatre phases.

L’idée essentielle est de briser l’écriture d’un scénario (ou test) en trois sections:

  •      La partie donnée décrit l’état du monde avant de commencer le comportement vous spécifiez dans ce scénario. Vous pouvez penser que les conditions préalables à l’essai.
  •      Le lorsque l’article est que le comportement que vous spécifiez.
  •      Enfin, la section décrit ensuite les changements que vous attendez en raison du comportement spécifié.


Puisque nous parlons de l’aide d’exemples les spécifications, il est logique de le montrer par un exemple [2]

Caractéristique: l’utilisateur métiers des stocks
Utilisateur demande une vente avant la clôture du négoce Scénario:
Étant donné que je dois 100 actions de MSFT actions
Et je dois 150 parts de APPL actions
Et le temps est avant clôture des marchés

Quand je demande à vendre 20 actions de MSFT actions

Ensuite, je dois avoir 80 parts de MSFT actions
Et je devrais avoir 150 parts de APPL actions
Et un ordre de vente pour 20 actions de MSFT actions aurait dû être exécuté

L’exemple ci-dessus utilise concombre [3], qui d’une manière populaire de BusinessFacingTests écriture mais vous pouvez utiliser leWhen-Then Compte tenu de style avec tout type de tests. Certaines personnes aiment mettre Given-When-Then que les commentaires de marquer des blocs informelles à l’intérieur des tests unitaires [4]. Je l’ai aussi vu cette convention pour structurer prose informel.

Il est d’habitude avec cette approche pour voir «et» utilisées pour combiner plusieurs expressions dans chaque clause.

Je l’ai caractérisé la donnée comme une description de l’état de pré-état parce que est ce que je préfère penser à elle. Un cadre d’analyse, cependant, interprète les Givens comme un ensemble de commandes pour mettre le système en cours de test dans l’état correct avant d’exécuter la commande quand. (Quelle est la raison pour laquelle d’autres conventions de nommage appellent souvent cette installation”.) Frameworks de tests fournissent diverses méthodes de requête pour les commandes puis ceux-ci devraient être libres d’effets secondaires.

BienWhen-Then Étant donné le style est symptomatique de BDD, l’idée de base est assez commun lors de l’écriture des tests ou des spécifications par exemple. Meszaros décrit le modèle comme quatre phases de test. Ses quatre phases sont Setup (Vu), l’exercice (Quand), vérifiez (Puis) et démontage [5]. Le projet de loi de réveil est venu avec la formulation Organiser, Loi, Affirmer.

Remarques

1: Dans les commentaires de révision à ce sujet, Dan crédite Ivan Moore pour une quantité importante d’inspiration à venir avec cela.

2: à partir de Pete Hodgson

3: Ou pour être strict il utilise Gherkin, qui est le nom du DSL de concombre.

4: cadres essai ont tendance à suivre soit nommer style de xUnit ou BDD, ces derniers ont tendance à nommer des méthodes dans le style Given-When-Then.

5: Le démontage est pas toujours nécessaire la mise en œuvre des tests (en particulier si vous utilisez automatisé démontage) et ne pas ajouter beaucoup à l’aspect communication de la spécification par exemple. Il est donc raisonnable de voir ce manque de style BDD.

Comments are closed.