, Bruno Orsier Un lecteur m'ayant indiqué qu'une nouvelle version de NBehave (0.4.5) était disponible depuis une semaine, j'ai repris l'exemple du jeu du pendu pour voir comment on écrivait maintenant les tests et le code de "pontage" (la façon dont j'ai procédé jusqu'à présent étant obsolète). L'expérience est assez satisfaisante, on procède comme avec Cucumber. J'ai donc écrit mes scenarios (purement textuels) puis écrit une classe C# pour faire le pont avec le code de "production", ma classe Game. Ici j'ai réutilisé la classe résultant de mes essais précédents pour aller vite, il aurait été préférable de se laisser guider par les tests pour découvrir petit à petit cette classe - c'est ce que vous conseille si vous voulez tenter l'expérience. Ci-dessous je présente les scénarios, puis la classe de pontage.
Tout d'abord les scénarios, tous écrits dans un fichier texte appelé pendu.scenario :
Story: handle one letter
Scenario: scenario1 (one wrong letter)
Given the secret word SANGLIER and the remaining count 6
When the user proposes the letter Z
Then the game displays ******** and the remaing count is 5
Scenario: scenario2 (one good letter)
Given the secret word SANGLIER and the remaining count 6
When the user proposes the letter A
Then the game displays *A****** and the remaing count is 6
Story: handle two successive letters
Scenario: scenario3 (a good letter followed by a good letter)
Given the secret word SANGLIER and the remaining count 6
Given the user has already proposed the letters A
When the user proposes the letter S
Then the game displays SA****** and the remaing count is 6
Scenario: scenario4 (a wrong letter followed by a good letter)
Given the secret word SANGLIER and the remaining count 6
Given the user has already proposed the letters Z
When the user proposes the letter S
Then the game displays S******* and the remaing count is 5
Story: handle the end of the game
Scenario: scenario5 (lost game)
Given the secret word SANGLIER and the remaining count 6
Given the user has already proposed the letters ZZZZZZ
Then the game displays ******** and the remaing count is 0
Scenario: scenario6 (winning game)
Given the secret word SANGLIER and the remaining count 6
Given the user has already proposed the letters XYZSANGLIER
Then the game displays SANGLIER and the remaing count is 3
A ce stage de votre lecture, il serait intéressant de voir ce que vous pensez de cette information. En tant que développeur, avez-vous assez d'informations pour programmer un jeu qui fonctionne ? En tant que testeur, avez-vous des idées sur d'autres scénarios que vous pourriez ajouter ? Est-ce que tout le monde comprend bien de quel jeu on parle ?
Au fait, testeur, notez bien que vous n'avez pas besoin d'un autre outil que Notepad si vous voulez modifier ou compléter ces scénarios.
Maintenant, un peu de cuisine informatique, il faut bien interpréter ce fichier texte. Pour cela, dans NBehave il faut programmer une classe portant l'attribut ActionSteps, comme ci-dessous :
[ActionSteps] public class Scenarios { private Game game; [Given("the secret word $secret and the remaining count $remaining")] public void InitializeGame(string secret, int remaining) { game = new Game(secret, remaining); } [Given("the user has already proposed the letters $letters")] public void ProposeLetters(string letters) { foreach (char c in letters) { game.ProposedLetter = c; } } [When("the user proposes the letter $letter")] public void ProposeLetter(char letter) { game.ProposedLetter = letter; } [Then("the game displays $display and the remaing count is $remaining")] public void DisplayResult(string display, int remaining) { game.DisplayedWord.ShouldEqual(display); game.Remaining.ShouldEqual(remaining); } }
Oups, il y a un peu de duplication dans ma classe (violation du principe DRY) - il faudra factoriser le code entre ProposedLetters et ProposeLetter par exemple.
Sinon vous constatez sans doute que le principe de cette classe est facile à comprendre, et découle assez naturellement des tests. Avec NBehave, je n'ai pas vu de moyen de générer partiellement ce code comme le fait Cucumber, mais je suppose que ce sera résolu ultérieurement.
Voici la sortie de NBehave:
Cette sortie illustre le seul problème que j'ai rencontré, les titres de stories ne sont pas affichés correctement par rapport à leurs scénarios, il y a un décalage.
En conclusion, une expérience très positive, et je suis content de voir que NBehave est toujours bien vivant !
Vous devez être identifié pour poster un commentaire.
| Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | ||
| 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 13 | 14 | 15 | 16 | 17 | 18 | 19 |
| 20 | 21 | 22 | 23 | 24 | 25 | 26 |
| 27 | 28 | 29 |
Copyright © 2000-2012 - www.developpez.com