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

De CCSL
Ir para navegação Ir para pesquisar
(Criou página com 'Executor de Testes Funcionais JUnit JUnit é usado para rodar testes de unidade, mas utilizando bibliotecas como RestAssured para fazer testes utilizando requests HTTP, é po...')
 
Sem resumo de edição
Linha 13: Linha 13:
   @RunWith(XimbalaueTestRunner.class)
   @RunWith(XimbalaueTestRunner.class)
     public class TesteDeCompras {
     public class TesteDeCompras {
         @TestEnvironment(ProdutoEClienteCadastrado.class)
         @TestEnvironment(ProdutoEClienteCadastrado.class)
         @TestDescription(name="Tenta comprar e não consegue", tags=new String[] { "compra", "validação" })
         @TestDescription(name="Tenta comprar e não consegue", tags=new String[] { "compra", "validação" })
Linha 19: Linha 18:
           ...
           ...
         }
         }
         @TestEnvironment(ProdutoEClienteCadastrado.class)
         @TestEnvironment(ProdutoEClienteCadastrado.class)
         @TestDescription(name="Realiza compra com sucesso", tags=new String[] { "compra" })
         @TestDescription(name="Realiza compra com sucesso", tags=new String[] { "compra" })
Linha 25: Linha 23:
           ...
           ...
         }
         }
   }
   }



Edição das 14h21min de 8 de agosto de 2018

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.

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