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


Linha 13: Linha 11:
   @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 16:
           ...
           ...
         }
         }
         @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 21:
           ...
           ...
         }
         }
   }
   }


Features interessantes:
Features interessantes:
- Execução via Maven ou Gradle
* Execução via Maven ou Gradle
- Execução paralela dos testes
* 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,..
* 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...
* etc...

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