Pergunta

Qual é a melhor ferramenta, de preferência gratuita/de código aberto, para geração automática de testes de unidade Java?Eu sei, os testes unitários não podem realmente servir ao mesmo propósito que os testes unitários normais do TDD, que documentam e orientam o design do sistema.No entanto, os testes de unidade gerados automaticamente podem ser úteis se você tiver uma enorme base de código herdada e quiser saber se as alterações necessárias terão efeitos colaterais obscuros e indesejados.

Foi útil?

Solução

Não é grátis.Não é de código aberto.Mas eu encontrei o AgitarOne Agitator (http://www.agitar.com/solutions/products/agitarone.html) para ser MUITO bom para gerar testes de unidade automaticamente E procurar efeitos colaterais obscuros indesejados

Outras dicas

Para ser sincero, provavelmente não faria isso.Os testes de unidade são isolados e você não saberá realmente se tem "efeitos colaterais obscuros e indesejados" porque tudo está isolado de outras coisas que causam os efeitos colaterais.Como resultado, você precisa de integração ou testes de sistema e que não é algo que você pode automatizar.

Crie alguns testes de sistema de alto nível, de ponta a ponta, que lhe dêem um certo grau de confiança e, em seguida, use testes de cobertura para descobrir o que você perdeu. A desvantagem é que, quando surgirem bugs, será mais difícil apontar à causa exata, mas a vantagem é que você terá muito mais probabilidade de ver os bugs.

Depois de encontrar bugs, escreva testes de unidade apenas para eles.À medida que avança, você pode usar TDD para os bits que deseja refatorar.

Eu sei que esta provavelmente não era a resposta que você gostaria de ouvir, mas venho testando há muitos e muitos anos e esta é uma abordagem sólida (embora eu dificilmente a chamaria de a única abordagem :)

É interessante, mas tal testes de unidade gerados podem realmente ser úteis. Se você estiver trabalhando em um aplicativo legado, muitas vezes será difícil escrever testes de unidade corretos e de última geração.

Esses testes gerados (se você tiver uma maneira de gerá-los, é claro) podem garantir que o comportamento do código permaneça intacto durante suas alterações, o que pode ajudá-lo refatorar o código e escrever testes melhores.

Agora sobre gerando a si mesmo.Não conheço nenhuma ferramenta mágica, mas você pode querer pesquisar a funcionalidade JUnit sobre a inclusão de alguns testes em javadocs para métodos.Isso permitiria que você escrevesse alguns testes simples.E sim, na verdade tem algum valor.

Segundo, você pode simplesmente escrever testes "grandes" manualmente.Claro, estes não seriam testes unitários por si só (sem isolamento, potenciais efeitos colaterais, etc.), mas pode ser um bom primeiro passo.Principalmente se você tiver pouco tempo e um aplicativo legado.

Dica bônus! Existe um excelente livro "Trabalhando efetivamente com código legado" com exemplos em Java, incluindo técnicas corretas para uso em tais situações.Infelizmente, você teria que fazer algumas coisas manualmente, mas teria que fazer isso em alguma etapa de qualquer maneira.

O plugin Coview para Eclipse (http://www.codign.com/products.html) parece perfeito.Estou interessado em gerar testes que cubram todos os caminhos do código, e isso parece funcionar.Ele também gera simulações que devem me poupar muito tempo.

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