How to Implement Class Tests?

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 CadastroDeAlunos em 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.
Playlists: Testing