Pergunta

Admito que quase não tenho experiência em unitar. Eu tentei com Dunit há um tempo atrás, mas desisti porque havia muitas dependências entre as classes no meu aplicativo. É um aplicativo Delphi bastante grande (cerca de 1,5 milhão de linhas de origem) e somos uma equipe que o mantém.

O teste por enquanto é feito por uma pessoa que o usa antes de lançar e relatar bugs. Também configurei alguns testes de GUI no TestComplete 6, mas geralmente falha devido a alterações no aplicativo.

Em negrito para Delphi, é usado como estrutura de persistência no banco de dados. Todos concordamos que o UNITEsting é o caminho a seguir e planejamos escrever um novo aplicativo no Dotnet com o Eco como estrutura de persistência.

Só não sei por onde começar com o Unittesting ... Algum bom livro, URL, práticas recomendadas etc?

Foi útil?

Solução

Bem, o desafio nos testes de unidade não é o próprio teste, mas em Escrevendo código testável. Se o código foi escrito não Pensando em testes, você provavelmente terá um tempo muito difícil.

De qualquer forma, se você pode refatorar, refatore para torná -lo testável. Não misture a criação de objetos com a lógica sempre que possível (não conheço Delphi, mas pode haver alguma estrutura de injeção de dependência para ajudar nisso).

Este blog Tem muita boa visão sobre os testes. Verificar Este artigo Por exemplo (minha primeira sugestão foi baseada nela).

Quanto a uma sugestão, tente testar os nós foliares do seu código primeiro, as classes que não dependem dos outros. Eles devem ser mais fáceis de testar, pois não precisam de zombarias.

Outras dicas

Escrever testes de unidade para código legado geralmente requer muita refatoração. Excelente livro que cobre este é o de Michael Feather "Trabalhando efetivamente com o código legado"

Uma sugestão adicional: use uma ferramenta de cobertura de teste de unidade para indicar seu progresso neste trabalho. Não tenho certeza sobre quais são as boas ferramentas de cobertura para o código Delphi. Eu acho que essa seria uma pergunta/tópico diferente.

Trabalhando efetivamente com o código legado

Uma das abordagens mais populares é escrever os testes unitários ao modificar o código. Todos os novos códigos obtêm testes de unidade e, para qualquer código que você modifique primeiro, escreva o teste, verifique, modifique-o, re-verifique-o e depois escreva/corrija os testes necessários devido às suas modificações.

Uma das grandes vantagens de ter uma boa cobertura de teste de unidade é poder verificar se as alterações que você faz não inadvertidamente quebram outra coisa. Essa abordagem permite que você faça isso, enquanto concentra seus esforços em suas necessidades imediatas.

A abordagem alternativa que empreguei é desenvolver meus testes de unidade via cooperativas :)

Quando você trabalha com o código legado, os OBJETCs simulados são realmente úteis para criar testes de unidade.

Dê uma olhada nesta pergunta sobre Delphi e zomba: Qual é a sua Biblioteca Delphi Zocking favorita?

Para .Net Unittesting Leia o seguinte: "A arte dos testes de unidade: com exemplos em .NET"

Sobre as melhores práticas:
O que você disse é certo: às vezes, é difícil escrever testes de unidade devido à dependência entre as classes ... então escreva testes de unidade logo após ou antes ;-) A implementação das classes. Assim, se você tiver algumas dificuldades para escrever os testes, talvez isso signifique que você tem um problema de design!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top