Executor de Testes Funcionais JUnit: mudanças entre as edições
Sem resumo de edição |
Sem resumo de edição |
||
| (Uma revisão intermediária pelo mesmo usuário não está sendo mostrada) | |||
| Linha 1: | Linha 1: | ||
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...