How to Implement Class Tests?
Implementação de Testes de Classes
Introdução aos Testes de Classe
- Os testes de classe exercitam o sistema através da criação de objetos e invocação dos métodos dessas classes.
- Podem ser utilizados em contextos de teste unitário, onde não há dependências externas, ou em testes de integração com dependências reais.
Estrutura dos Testes
- Os testes não estão diretamente ligados a requisitos especificados pelos stakeholders, mas sim às propriedades que os desenvolvedores consideram importantes.
- Um exemplo simples é verificar se o cadastro de alunos está inicialmente vazio, sem ações específicas além da verificação do estado.
Verificação do Estado Inicial
- O teste verifica se a lista de alunos cadastrados tem tamanho zero utilizando o método
getAlunos().
- A cláusula
beforeEaché utilizada para criar um novo objeto antes da execução dos testes, evitando repetição no código.
Configuração Comum entre Testes
- O setup comum permite reutilizar a inicialização do objeto
CadastroDeAlunosem todos os testes da suíte.
- O segundo teste verifica se o sistema impede a inserção de dois alunos com o mesmo CPF, demonstrando uma estrutura mais complexa com três partes: setup, ação e verificação.
Execução e Resultados Esperados
- No setup do segundo teste, um aluno é cadastrado e tenta-se adicionar um segundo aluno com CPF duplicado.
Verificação de Propriedades em Classes de Cadastro
Testes de Classe e Propriedades do Objeto
- Após a realização da ação, é possível verificar as propriedades do objeto na classe de cadastro de alunos. A propriedade principal é que um aluno só será cadastrado após essa verificação.
- Os testes realizados não têm direcionamento explícito dos cenários ou requisitos solicitados pelos stakeholders. Em vez disso, focam nas propriedades que os desenvolvedores desejam verificar sobre as especificações dos métodos.
- A criação de objetos e a chamada de métodos são centrais para o funcionamento do sistema, destacando a importância da implementação correta das funcionalidades.
- O exercício mencionado envolve tanto o código quanto a lógica por trás dos testes, refletindo uma parte significativa do sistema em desenvolvimento.