Cucumber (software) (Italiano)
Definizioni dei passaggiModifica
I passaggi nei file Gherkin “s .feature
possono essere considerati invocazioni di metodi. Prima di Cucumber può eseguire un passaggio deve essere detto, tramite una definizione di passaggio, come deve essere eseguito tale passaggio.
Le definizioni sono scritte in Ruby e convenzionalmente archiviate sotto features/step_definitions/*_steps.rb
. Le definizioni iniziano con le stesse parole chiave della loro invocazione (incluso il supporto completo della lingua di Gherkin). Ogni definizione accetta due argomenti
- Unespressione regolare o una stringa con $ variabili
- Un blocco contenente codice ruby da eseguire
Esempio utilizzo di espressioni regolari
Given /(.*) has a valid Credit or Debit card/ do |name| # Ruby codeend
Esempio di utilizzo di stringhe e $ variabili. Tieni presente che in fase di esecuzione la stringa viene convertita in unespressione regolare e qualsiasi variabile $ viene convertita in (.*)
.
Given "$name has a valid Credit or Debit card" do |name| # Ruby codeend
HooksEdit
Gli hook sono il modo in cui Cucumber consente di eseguire la configurazione prima che i test vengano eseguiti e lo smontaggio in seguito. Sono definiti come blocchi Ruby eseguibili , simili ai metodi JUnit contrassegnati con annotazioni @Before, @After
. Convenzionalmente sono posizionati sotto support/
e vengono applicati globalmente. Esistono tre tipi fondamentali di hook
-
Before
– Viene eseguito prima di uno scenario -
After
– Viene eseguito dopo uno scenario -
Around
– Assume il controllo e corre intorno a uno scenario
Gli hook aggiuntivi includono
-
BeforeStep
-
AfterStep
-
AfterConfiguration
– Viene eseguito dopo la configurazione Cucumber e viene passato un file in posizione della configurazione
Before, After, and Around
opzionalmente gli hook accettano un elenco di scenari di filtraggio dei tag a cui si applicano. Un elenco di tag nella stessa stringa viene trattato come OR
, mentre i singoli argomenti vengono trattati come AND
; i tag possono essere facoltativamente negati facendoli precedere da ~
.
Esempio di un hook taggato prima
Before("@ATM") do |scenario| # Ruby codeend
Gli hook sono spesso usati per mantenere lo stato del database, tipicamente pulendo prima di eseguire uno scenario. È anche possibile avviare e ripristinare una transazione utilizzando Before
e After
hook e molte estensioni Cucumber forniscono un @txn
per tale scopo.
Integrazioni e implementazioniModifica
Esistono implementazioni non Ruby di Cucumber per linguaggi popolari inclusi Java, JavaScript e Python. Esiste anche il supporto per framework di test di integrazione. Un elenco completo delle implementazioni può essere trovato su Cucumber. Cucumber ha strumenti di test integrati che funzionano bene con molte configurazioni di integrazione continua. Esistono plug-in di cetriolo per strumenti CI popolari come Jenkins e TeamCity e anche per IDE come Eclipse e RubyMine.
Di seguito è riportato un esempio di una definizione di passaggio scritta per Java con Cucumber-JVM.
@Given("(.*) has a valid Credit or Debit card")public void has_card(String name) { // Java code}
Formatter pluginsEdit
Cucumber utilizza i plugin del formatter per fornire loutput. Per impostazione predefinita vengono forniti diversi formati comuni, tra cui
- JSON
- HTML
- JUnit
I formati disponibili sono non standardizzato per diverse implementazioni di Cucumber, quindi le offerte potrebbero differire. Cucumber supporta anche formati di output avanzati come immagini e video.
Automazione del browserModifica
Cucumber non fornisce automazione del browser integrata. Tuttavia, funziona bene con i programmi esistenti come Selenium e WATiR-WebDriver. Supporta lesecuzione di test con transazioni sfruttando altri programmi come ActiveRecord.
Cucumber command-lineEdit
Cucumber viene fornito con uninterfaccia a riga di comando incorporata che copre un elenco completo di istruzioni . Come la maggior parte degli strumenti da riga di comando, cucumber fornisce lopzione --help
che fornisce un riepilogo degli argomenti accettati dal comando.
La riga di comando di Cucumber può essere utilizzata per eseguire rapidamente test definiti . Supporta anche lesecuzione di un sottoinsieme di scenari filtrando i tag.
$ cucumber --tags @tag-name
Il comando precedente aiuta a eseguire solo quegli scenari che hanno il specificato @tag-name
. Gli argomenti possono essere forniti come unoperazione OR
o AND
dei tag. Oltre ai tag, gli scenari possono essere filtrati sui nomi degli scenari.
$ cucumber --name logout
Il comando precedente eseguirà solo quegli scenari che contengono la parola “logout”.
È anche utile essere in grado di sapere cosa è andato storto quando un test fallisce. Cucumber semplifica lindividuazione dei bug nel codice con lopzione --backtrace
.
Cucumber può anche essere configurato per ignorare determinati scenari che non sono stati completati contrassegnandoli con il tag Work In Progress @wip
. Quando a Cucumber viene passato largomento --wip
, Cucumber ignora gli scenari con il tag @wip
.