cucumberCommencer avec le concombre


Remarques

À propos du concombre

Cucumber est un outil qui exécute des spécifications exécutables de logiciels. Les spécifications, appelées "caractéristiques", sont écrites en langage naturel structuré. Cucumber exécute une fonctionnalité en mappant chacune de ses étapes sur une "définition d'étape" écrite dans le langage de programmation pris en charge par cette implémentation de Cucumber. Le concombre est implémenté dans de nombreux langages de programmation, y compris Ruby (l'original), Java et Javascript . Il est également traduit dans de nombreuses langues humaines.

Concombre a été écrit pour soutenir la méthodologie agile appelée Développement comportemental (BDD). Dans BDD, on commence le développement en écrivant des tests d'acceptation qui décrivent la fonctionnalité du logiciel du point de vue de l'utilisateur (plutôt que du point de vue d'un programmeur, comme dans les tests unitaires). Les caractéristiques du concombre servent de ces tests d’acceptation.

En général, les fonctionnalités Cucumber sont une documentation lisible par l'homme, qui est également une suite de tests exécutables, ce qui signifie que la documentation et les tests sont toujours compatibles. Le concombre est utile pour communiquer avec les parties prenantes autres que les programmeurs à propos de la documentation et des tests. Il permet également aux programmeurs d’écrire des tests à un niveau conceptuel sans se soucier des problèmes de langage de programmation.

Le concombre est le plus souvent utilisé pour spécifier et tester des applications Web, en utilisant un pilote de navigateur tel que Selenium ou PhantomJS. Cependant, il peut être utilisé avec n'importe quel logiciel pouvant être exécuté et dont l'état ou les résultats peuvent être déterminés à partir du langage de programmation pris en charge par une implémentation de Cucumber.

Autre documentation

La documentation officielle est à https://cucumber.io/docs . La documentation générée à partir des fonctionnalités de Cucumber décrivant les implémentations de Cucumber est à

https://relishapp.com/explore comprend d'autres outils et exemples liés à Cucumber, mais malheureusement pas Cucumber-JVM.

Ce sujet

Ce sujet ne devrait donner que quelques exemples qui présentent au lecteur les concepts de concombre. D'autres sections donneront des exemples complets d'installation, d'utilisation en ligne de commande et IDE, de fonctionnalités, de définitions d'étapes, etc.

Une fonctionnalité de concombre

Le concombre utilise la syntaxe Gherkin pour décrire les comportements de votre logiciel en langage naturel structuré.

En tant que tel, Cucumber n'est pas un framework de test (un malentendu commun), mais un cadre de documentation système , pas très différent des autres comme le scénario de cas d'utilisation. L'incompréhension commune est due au fait que la documentation de Concombre peut être automatisée afin de s'assurer qu'elle reflète le comportement réel du système .

Une suite de documentation Cucumber est composée de Features , chacune décrivant une fonctionnalité de votre logiciel, écrite en Gherkin et hébergée dans son propre fichier. En organisant ces fichiers dans une structure de répertoires, vous pouvez regrouper et organiser les fonctionnalités:

  • bancaire/
    • retrait.feature
    • atm.feature
    • personal-loan.feature
  • commerce/
    • portfolio.feature
    • intraday.feature
  • hypothèque/
    • évaluation.features
    • caractéristique comptable

Chaque Feature est un fichier texte composé d'une section d'introduction optionnelle, non structurée, purement informative et d'un ou plusieurs Scenarios , chacun représentant une condition d'utilisation ou un cas d'utilisation.

Exemple:

Feature: Documentation
As a StackOverflow user or visitor
I want to access the documentation section
    
    Scenario: search documentation on Stack Overflow
        Given I am on StackOverflow
        And I go to the Documentation section
        When I search for "cucumber"
        And I follow the link to "cucumber"
        Then I should see documentation for "cucumber"
 

Chaque ligne commençant par Given, Quand, Et, Mais ou est ensuite appelé Step . N'importe quelle étape peut commencer par n'importe lequel de ces mots, peu importe l'ordre, mais il est classique de les utiliser de la manière la plus naturelle possible.

Les fonctionnalités peuvent également être organisées via des Tags , des annotations que l'éditeur peut placer sur une Feature ou un Scenario pour mieux les classer.

Exécutifs une fonction est réalisée par le code de la colle qui peut être écrit dans de nombreuses langues (Java, Ruby, Scala, C / C ++): chaque Step est en correspondance avec le code de la colle afin d'identifier Step Definitions (communément abrégé en StepDef) par expressions régulières.

Chaque Step ne peut avoir qu'une seule Step Definition associée.

Lorsqu'une Feature est exécutée, chaque Scenario composition est exécuté, ce qui signifie que chaque StepDef correspondant aux Step s dans chaque Scenario est exécuté.

Une définition d'étape de concombre dans Ruby

Dans features / step_definitions / documentation.rb:

When /^I go to the "([^"]+)" documentation$/ do |section|
  path_part =
    case section
      when "Documentation"
        "documentation"
      else
        raise "Unknown documentation section: #{section}"
    end
  visit "/documentation/#{path_part}/topics"
end

Then /^I should see the "([^"]+) documentation"$/ do |section|
  expect(page).to have_css('h2.doctag_title a', text: section)
end
 

Ces étapes exercent une application Web. Ils sont à peu près aussi simples que possible tout en étant pratiques.

Chaque étape commence par un mot-clé Gherkin, qui dans un fichier de définition d'étape est une méthode qui enregistre une étape avec Concombre. La méthode de définition des étapes prend une expression régulière, qui correspond à une ligne dans un scénario, et un bloc, qui est exécuté lorsque le scénario atteint une ligne correspondante. Les groupes de capture dans l'expression régulière sont transmis au bloc en tant que paramètres de bloc.

L'étape When contient un exemple simple, en ligne, de passage d'une référence lisible par l'homme à une page ("Documentation") à une URL. Les suites de concombres réels placent généralement cette logique dans une méthode distincte. La méthode de visit est fournie par Capybara. Capybara n'est pas obligé d'utiliser le Concombre, bien qu'il soit très couramment utilisé avec lui. visit indique au navigateur contrôlé par Capybara de visiter l’URL donnée.

L'étape Then montre comment tester le contenu d'une page. expect / to est fourni par RSpec (encore une fois, pas requis par le concombre mais très couramment utilisé avec elle). have_css est fourni par Capybara. Le sélecteur CSS donné doit correspondre à un élément de la page contenant le texte donné. Notez que cette attente échoue si la requête du navigateur a échoué.

Pour plus d'exemples, voir la rubrique "Définition de l'étape" .

Installation Ruby Pure

Pour installer Cucumber à utiliser avec Ruby, utilisez simplement la commande

gem install cucumber
 

Si vous utilisez un bundler, vous pouvez également ajouter la ligne suivante à votre Gemfile.

gem 'cucumber'
 

Et puis exécutez bundler

bundle install
 

[Je pense que cela fait partie de son propre sujet, Installation. J'ai créé ce sujet et y ai copié cet exemple. Lorsque ce sujet est approuvé, je vais le déplacer et supprimer la copie.]