Ricerca…


Osservazioni

A proposito di Cetriolo

Cucumber è uno strumento che esegue le specifiche eseguibili del software. Le specifiche, chiamate "caratteristiche", sono scritte in un linguaggio naturale strutturato. Cucumber esegue una funzionalità mappando ciascuno dei suoi passaggi su una "definizione di passo" scritta nel linguaggio di programmazione supportato da tale implementazione di Cucumber. Cucumber è implementato in molti linguaggi di programmazione tra cui Ruby (l'originale), Java e Javascript . È anche tradotto in molte lingue umane.

Cucumber è stato scritto per supportare la metodologia agile denominata Behaviour Driven Development (BDD). In BDD, uno inizia lo sviluppo all'esterno scrivendo test di accettazione che descrivono le funzionalità del software dal punto di vista dell'utente (piuttosto che dal punto di vista di un programmatore come nei test di unità). Le funzioni di cetriolo fungono da questi test di accettazione.

In generale, le funzionalità di Cucumber sono documenti leggibili dall'utente, che è anche una suite di test eseguibile, il che significa che la documentazione e i test sono sempre d'accordo. Cucumber è utile per comunicare con gli stakeholder non programmatori sulla documentazione e sui test. Consente inoltre ai programmatori di scrivere test a livello concettuale senza problemi di linguaggio di programmazione irrilevanti.

Cucumber viene spesso utilizzato per specificare e testare le applicazioni Web, utilizzando un driver del browser come Selenium o PhantomJS. Tuttavia, può essere utilizzato con qualsiasi software che può essere eseguito e il cui stato o i cui risultati possono essere determinati dal linguaggio di programmazione supportato da un'implementazione di Cucumber.

Altra documentazione

La documentazione ufficiale è su https://cucumber.io/docs . Documentazione generata dalle funzionalità di Cucumber che descrivono le implementazioni di Cucumber

https://relishapp.com/explore include alcuni altri strumenti ed esempi relativi a Cucumber, anche se, sfortunatamente, Cucumber-JVM.

Questo argomento

Questo argomento dovrebbe fornire solo alcuni esempi che introducono il lettore ai concetti di Cucumber. Altre sezioni forniranno esempi completi di installazione, utilizzo da riga di comando e IDE, funzionalità, definizioni dei passaggi, ecc.

Una funzionalità di cetriolo

Cucumber utilizza la sintassi Gherkin per descrivere i comportamenti del tuo software in un linguaggio naturale strutturato.

In quanto tale, Cucumber non è un framework di test (un comune malinteso), ma un framework di documentazione di sistema , non molto diverso da altri come Use Case Scenario. Il comune fraintendimento è dovuto al fatto che la documentazione di Cucumber può essere automatizzata per garantire che rifletta il comportamento reale del sistema .

Una suite di documentazione di Cucumber è composta da Features , ognuna delle quali descrive una funzionalità del software, scritta in Gherkin e ospitata nel proprio file. Organizzando questi file in una struttura di directory è possibile raggruppare e organizzare le funzionalità:

  • bancario/
    • withdrawal.feature
    • atm.feature
    • personal-loan.feature
  • negoziazione /
    • portfolio.feature
    • intraday.feature
  • mutuo/
    • evaluation.feature
    • accounting.feature

Ogni Feature è un file di testo semplice composto da una sezione introduttiva facoltativa, non strutturata, puramente informativa e uno o più Scenarios , ognuno dei quali rappresenta una condizione di utilizzo o un caso d'uso.

Esempio:

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"

Ogni riga che inizia con Given , When , And , But or Then è detta Step . Qualsiasi passaggio può iniziare con una qualsiasi di quelle parole indipendentemente dall'ordine, ma è normale utilizzarle nel modo più naturale possibile.

Le caratteristiche possono anche essere organizzate tramite Tags , annotazioni che l'editor può mettere su una Feature o uno Scenario per categorizzarlo ulteriormente.

L'eseguibilità di una feature è ottenuta tramite il glue code che può essere scritto in molti linguaggi diversi (Java, Ruby, Scala, C / C ++): ogni Step è abbinato al codice della colla per identificare le Step Definitions (comunemente abbreviato in StepDef ) tramite espressioni regolari.

Ogni Step può avere solo una Step Definition associata.

Quando viene eseguita una Feature viene eseguito ogni Scenario composizione, vale a dire che ogni StepDef che corrisponde allo Step s in ogni Scenario viene eseguito.

Installazione Pure Ruby

Per installare Cucumber per l'uso con Ruby è sufficiente utilizzare il comando

gem install cucumber

In alternativa, se stai usando bundler, puoi aggiungere la seguente riga al tuo Gemfile

gem 'cucumber'

E quindi eseguire bundler

bundle install

[Penso che questo appartenga al suo stesso argomento, Installazione. Ho creato quell'argomento e ho copiato questo esempio lì. Quando l'argomento è approvato, lo sposterò lì ed eliminerò la copia.]

Una definizione di passo Cucumber in Ruby

In 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

Questi passaggi esercitano un'applicazione web. Sono semplici quanto possono essere mentre sono ancora pratici.

Ogni fase inizia con una parola chiave Gherkin, che in un file di definizione passo è un metodo che registra un passo con Cucumber. Il metodo di definizione passo prende un'espressione regolare, che corrisponde a una riga in uno scenario e un blocco, che viene eseguito quando lo scenario raggiunge una linea corrispondente. Cattura i gruppi nell'espressione regolare vengono passati al blocco come parametri di blocco.

Il passaggio When ha un semplice esempio in linea di passare da un riferimento leggibile da un utente a una pagina ("Documentazione") a un URL. Le suite di Real Cucumber di solito mettono questa logica in un metodo separato. Il metodo di visit è fornito da Capybara. Capibara non è tenuto a usare Cetriolo, sebbene sia molto usato con esso. visit dice al browser controllato da Capybara di visitare l'URL indicato.

Il passaggio Then mostra come è possibile testare il contenuto di una pagina. expect / to è fornito da RSpec (di nuovo, non richiesto da Cucumber ma molto comunemente usato con esso). have_css è fornito da Capybara. L'aspettativa è che il selettore CSS specificato corrisponda a un elemento della pagina che contiene il testo specificato. Si noti che questa aspettativa fallirebbe se la richiesta del browser fosse fallita.

Per ulteriori esempi, vedere l'argomento "Definizione step" .



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow