Cucumber (software) (Português)
Step definitionEdit
As etapas nos arquivos Gherkin “s .feature
podem ser consideradas uma invocação de método. Antes do Cucumber pode executar uma etapa, deve ser informado, por meio de uma definição de etapa, como essa etapa deve ser executada.
As definições são escritas em Ruby e convencionalmente arquivadas em features/step_definitions/*_steps.rb
. As definições começam com as mesmas palavras-chave de sua invocação (incluindo o suporte completo a idiomas do Gherkin). Cada definição leva dois argumentos
- Ou uma expressão regular ou string com $ variáveis
- Um bloco contendo código Ruby para executar
Exemplo usando expressões regulares
Given /(.*) has a valid Credit or Debit card/ do |name| # Ruby codeend
Exemplo usando strings e $ variáveis. Observe que, em tempo de execução, a string é convertida em uma expressão regular e qualquer $ variável é convertida para corresponder a (.*)
.
Given "$name has a valid Credit or Debit card" do |name| # Ruby codeend
HooksEdit
Os ganchos são a maneira do Cucumber de permitir que a configuração seja realizada antes dos testes serem executados e que a desmontagem seja executada posteriormente. Eles são definidos como blocos Ruby executáveis , semelhante aos métodos JUnit marcados com @Before, @After
anotações. Convencionalmente, eles são colocados em support/
, e são aplicados globalmente. Existem três tipos básicos de ganchos
-
Before
– É executado antes de um cenário -
After
– É executado após um cenário -
Around
– assume o controle e percorre um cenário
ganchos adicionais incluem
-
BeforeStep
-
AfterStep
-
AfterConfiguration
– é executado após a configuração do Cucumber e é passado um posição da configuração
Before, After, and Around
ganchos opcionalmente obtêm uma lista de cenários de filtragem de tags aos quais se aplicam. Uma lista de tags na mesma string é tratada como OR
, enquanto os argumentos individuais são tratados como AND
; tags podem ser opcionalmente negadas sendo precedidas por ~
.
Exemplo de uma tag marcada antes do gancho
Before("@ATM") do |scenario| # Ruby codeend
Ganchos são frequentemente usados para manter o estado do banco de dados, normalmente limpando antes de executar um cenário. Também é possível iniciar e reverter uma transação usando Before
e After
ganchos, e muitas extensões Cucumber fornecem um @txn
tag para tal propósito.
Integrações e implementaçõesEdit
Implementações não Ruby do Cucumber existem para linguagens populares incluindo Java, JavaScript e Python. Também existe suporte para estruturas de teste de integração. Uma lista completa de implementações pode ser encontrada no Cucumber. A Cucumber integrou ferramentas de teste que funcionam bem com muitas configurações de integração contínua. Existem plug-ins pepinos para ferramentas CI populares como Jenkins e TeamCity e também para IDEs como Eclipse e RubyMine.
Abaixo está um exemplo de definição de etapa escrita para Java com Cucumber-JVM.
@Given("(.*) has a valid Credit or Debit card")public void has_card(String name) { // Java code}
PluginsEdit do formatador
Cucumber usa plug-ins do formatador para fornecer saída. Vários formatos comuns são fornecidos por padrão, incluindo
- JSON
- HTML
- JUnit
Os formatos disponíveis são não padronizado em diferentes implementações Cucumber, portanto, as ofertas podem ser diferentes. O Cucumber também oferece suporte a formatos de saída avançados, como imagens e vídeos.
Editor de automação do navegador
O Cucumber não fornece automação de navegador integrada. No entanto, ele funciona bem com programas existentes, como Selenium e WATiR-WebDriver. Ele suporta a execução de testes com transações por meio do aproveitamento de outros programas, como ActiveRecord.
Cucumber command-lineEdit
Cucumber vem com uma interface de linha de comando integrada que cobre uma lista abrangente de instruções . Como a maioria das ferramentas de linha de comando, o cucumber fornece a opção --help
que fornece um resumo dos argumentos aceitos pelo comando.
A linha de comando Cucumber pode ser usada para executar testes definidos rapidamente . Ele também suporta a execução de um subconjunto de cenários por meio da filtragem de tags.
$ cucumber --tags @tag-name
O comando acima ajuda a executar apenas os cenários que têm o especificado @tag-name
. Os argumentos podem ser fornecidos como uma operação lógica OR
ou AND
de tags. Além das tags, os cenários podem ser filtrados por nomes de cenários.
$ cucumber --name logout
O comando acima executará apenas os cenários que contêm a palavra “logout”.
Também é útil saber o que deu errado quando um teste falha. O Cucumber facilita a detecção de bugs no código com a opção --backtrace
.
O Cucumber também pode ser configurado para ignorar certos cenários que não foram concluídos, marcando-os com a tag Trabalho em andamento @wip
. Quando Cucumber recebe o argumento --wip
, Cucumber ignora os cenários com a tag @wip
.