Eu tenho uma classe que encapsula os resultados de uma medição científica. Estou desenvolvendo testes de unidade desde o início, mas não tenho muita experiência com testes de unidade e não tenho certeza de quais comportamentos devo testar e como.
Minha turma faz três tipos de coisas:
- Lê dados de medição de um arquivo (ou uma string) em suas variáveis de instância
- Grava seus dados de medição em um arquivo ou string
- Executa cálculos em seus dados (por exemplo, obtendo a média de um conjunto de números)
Minha abordagem agora é incluir um arquivo de dados de exemplo em bom estado no meu testdiretório. Um teste lê os dados do arquivo, passa-os para a minha turma e garante que ele atenda a algumas verificações básicas de sanidade. Outro teste passa o nome do arquivo do arquivo para minha classe, permite que a classe o leia e executa os mesmos testes. O restante dos testes lê os dados do arquivo, passa-os para a minha classe e verifica se os resultados dos métodos de processamento de dados estão corretos, considerando o que sei sobre esse conjunto de dados.
Isso parece bastante confuso, no entanto. Os testes que verificam (3) implicitamente assumem que os comportamentos de (1) estão corretos, pois são as funções em (1) que estão sendo usadas para preencher a classe em primeiro lugar. E os testes de (1) podem se beneficiar das extensas verificações feitas pelos testes de (3). Estou estruturando mal meus testes de unidade ou isso é apenas um resultado natural do fato de eu precisar usar um conjunto de dados específico em meus testes?