Sitemap

Teste integrados com Cucumber e java/Junit

3 min readJan 1, 2023

Este artigo iremos discutir como configurar o framework de teste Cucumber junto com Java/Junit para escrever teste integrados de um determinado sistema.

Press enter or click to view image in full size

Introdução

Durante o desenvolvimento de software existe a necessidade de executarmos testes para validar e garantir a qualidade do que foi desenvolvido, assim como a funcionalidade que compõe esse desenvolvimento. Atualmente, a comunidade, difundi vários tipos de testes, e cada um, com foco em uma determinada especificação.

Dentre estes vários tipos de testes, os Testes Integrados surge quando os módulos do software são integrados logicamente e testados como um grupo. Um projeto de software típico consiste em vários módulos de software, codificados por diferentes programadores. O objetivo deste nível de teste é expor defeitos na interação entre esses módulos de software quando eles são integrados. Ou seja, os Testes Integrados concentra-se em verificar a comunicação de dados entre esses módulos.

Existem várias formas de executar testes integrados em uma determinada aplicação. Aqui discutiremos uma forma de executar tais usando Cucumber e Java.

Cucumber

O Cucumber é uma framework com suporte ao BDD — Behaviour-Driven Development(BDD) que permite automatizar testes que são criados, normalmente através do BDD. Se ainda não estiver familiarizado com BDD aconselho que comece por aqui https://cucumber.io/docs/bdd/.

Cucumber lê especificações executáveis ​​escritas em texto simples e valida se o software faz o que essas especificações dizem. As especificações consistem em vários exemplos ou cenários . Por exemplo:

Cenario: Validar funcionalidade de logout
Dado que estou na página inicial do Github
Quando especifico o nome de usuário/senha
E clico no botão SignIn
Então devo poder ver a opção de logout

Cada cenário é uma lista de etapas (steps) para o Cucumber trabalhar. O Cucumber verifica se o software está em conformidade com a especificação e gera um relatório indicando sucesso ou falha para cada cenário.

Para que o Cucumber entenda os cenários, eles devem seguir algumas regras básicas de sintaxe, chamadas de Gherkin.

Mão na massa!

Primeiramente criaremos um projeto Java para criarmos nossos testes. Usaremos o gerenciador de dependências Maven e para criar o projeto execute:

mvn archetype:generate                       \
"-DpackageName=br.com.cahenre" \
"-DarchetypeGroupId=io.cucumber" \
"-DarchetypeArtifactId=cucumber-archetype"\
"-DarchetypeVersion=7.5.0" \
"-DgroupId=testesIntegrados" \
"-DartifactId=testesIntegrados" \
"-Dpackage=testesIntegrados" \
"-Dversion=1.0.0-SNAPSHOT" \
"-DinteractiveMode=false"

No caso estaremos criando um projeto chamado testeIntegrados, com o plugin Maven `cucumber-archetype`. Com isso nosso projeto já terá as dependências necessárias. Caso prefira você pode adicionar em seu projeto:

<dependencies>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-java</artifactId>
<scope>test</scope>
</dependency>

<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-junit-platform-engine</artifactId>
<scope>test</scope>
</dependency>

<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-suite</artifactId>
<scope>test</scope>
</dependency>

<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<scope>test</scope>
</dependency>
</dependencies>

Caso esteja utilizando o IntelliJ sugiro que instale o plugin do cucumber, basta seguir: https://www.jetbrains.com/help/idea/cucumber-support.html

Press enter or click to view image in full size

Caso tenha dado tudo certo o projeto terá a seguinte estrutura inicial:

--

--