Executor de Testes Funcionais JUnit: mudanças entre as edições

De CCSL
Ir para navegação Ir para pesquisar
Sem resumo de edição
Sem resumo de edição
 
(2 revisões intermediárias pelo mesmo usuário não estão sendo mostradas)
Linha 1: Linha 1:
Executor de Testes Funcionais JUnit
JUnit é usado para rodar testes de unidade, mas utilizando bibliotecas como RestAssured para fazer testes utilizando requests HTTP, é possível utiliza-los para iniciar um serviço e testar a integração de todos os componentes.
JUnit é usado para rodar testes de unidade, mas utilizando bibliotecas como RestAssured para fazer testes utilizando requests HTTP, é possível utiliza-los para iniciar um serviço e testar a integração de todos os componentes.



Edição atual tal como às 10h29min de 13 de agosto de 2018

JUnit é usado para rodar testes de unidade, mas utilizando bibliotecas como RestAssured para fazer testes utilizando requests HTTP, é possível utiliza-los para iniciar um serviço e testar a integração de todos os componentes.

A idéia seria de criar um executor de testes que irá ler annotações em métodos e classes de teste e os executaria de uma maneira eficiente/hierárquica, visto que testes funcionais muitas vezes requerem uma etapa de setup e teardown.

Exemplo:

Quero testar a compra de um produto por um cliente que tem alguma restrição e não deveria conseguir fazer a ordem de compra. Para isto preciso de ter o produto cadastrado, o cliente cadastrado, base de CEP, e eventualmente muitas outras coisas que caracterizariam um ambiente para a execução deste teste. Provavelmente este mesmo ambiente poderia ser utilizado para testar se o cliente consegue comprar outro produto com sucesso, economizando tempo de execução.

Exemplo de código:

  @RunWith(XimbalaueTestRunner.class)
   public class TesteDeCompras {
       @TestEnvironment(ProdutoEClienteCadastrado.class)
       @TestDescription(name="Tenta comprar e não consegue", tags=new String[] { "compra", "validação" })
       public void tentaComprarENaoConsegue() {
          ...
       }
       @TestEnvironment(ProdutoEClienteCadastrado.class)
       @TestDescription(name="Realiza compra com sucesso", tags=new String[] { "compra" })
       public void compraComSucesso() {
          ...
       }
  }

Features interessantes:

  • Execução via Maven ou Gradle
  • Execução paralela dos testes
  • UI para execução de testes, reexecução dos que falharam, coleta de dados de cobertura, tempo de execução de testes, filtro por tags ou por ambiente,..
  • etc...