Executor de Testes Funcionais JUnit

De CCSL
Ir para navegação Ir para pesquisar

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...