Pergunta

Existe alguma maneira de medir a cobertura de código com DUnit?Ou existem algumas ferramentas gratuitas de realizar isso?O que você usar para que?O que a cobertura de código você costuma ir para?

Jim McKeeth:Obrigado pela resposta detalhada.Eu estou falando sobre testes de unidade, no sentido de uma abordagem TDD, não só sobre testes de unidade depois de uma falha ocorreu.Eu estou interessado na cobertura de código que eu possa alcançar com algumas informações básicas prontas para testes de unidade.

Foi útil?

Solução

Acabei de criar um novo projeto de código aberto no código do Google com uma ferramenta básica de cobertura de código para o Delphi 2010. https://sourceforge.net/projects/delphicodeCoverage/

No momento, ele pode medir a cobertura da linha, mas também planejo adicionar cobertura de classe e método.

Ele gera relatórios HTML com um resumo e uma fonte marcada, mostrando quais linhas são cobertas (verde), que não eram (vermelhas) e o restante das linhas que não possuíam nenhum código gerado para elas.

Atualizar:A partir da versão 0.3 de Cobertura do código Delphi Você pode gerar relatórios XML compatíveis com o plugin Hudson Emma para exibir tendências de cobertura de código dentro Hudson.

Atualizar:A versão 0.5 traz correções de bugs, aumento da configuração e relatórios limpos

Atualizar:A versão 1.0 traz suporte para saída EMMA, cobertura de classes e métodos e cobertura de DLLs e BPLS

Outras dicas

Não conheço nenhuma ferramenta gratuita. Aqtime é quase o padrão defacto para perfil de Delphi. Eu não usei, mas uma pesquisa rápida encontrada Descubra para Delphi, que agora é de código aberto, mas apenas faz cobertura de código.

Qualquer uma dessas ferramentas deve dar uma idéia de quanta cobertura de código seus testes de unidade estão recebendo.

Você está se referindo a cobertura de código a partir de testes de unidade ou obsoletos código?Em geral eu acho que só testável código que tem uma falha deve ser coberto com um teste de unidade (sim, eu perceber que pode estar começando uma guerra santa, mas que é onde eu estou).De modo que seria uma muito baixa percentagem.

Agora obsoleto código por outro lado, é uma história diferente.Obsoleto código é o código que não é usada.Você provavelmente não precisa de uma ferramenta para dizer isso para um monte de código, basta olhar para os pequenos Pontos Azuis depois de compilar em Delphi.Nada sem um ponto azul é obsoleto.Geralmente, se o código não estiver sendo usado, então ele deve ser removido.De modo que seria 100% de cobertura de código.

Há outros cenários para obsoletos código, por exemplo, se você tem um código especial para lidar se a data nunca terras no dia 31 de fevereiro.O compilador não sabe o que não pode acontecer, então ele compila-lo e dá-lo um ponto azul.Agora você pode escrever um teste de unidade e teste-o e ele pode funcionar, mas, em seguida, você apenas perdeu seu tempo uma segunda vez (a primeira para a escrita do código, o segundo para testá-lo).

Existem ferramentas para rastrear os caminhos de código obter usado quando o programa é executado, mas que é apenas simi-confiável, já que nem todos os caminhos de código terá usado de cada vez.Como que um código especial, que você tem que lidar ano bissexto, ele só será executado a cada quatro anos.Então, se você levá-lo para fora, em seguida, o programa será interrompida a cada quatro anos.

Eu acho que eu realmente não responder à sua pergunta sobre DUnit e Cobertura de Código, mas eu acho que pode ter deixado você com mais perguntas, então você começou com.Que tipo de cobertura de código você está procurando?

ATUALIZAÇÃO: Se você está tomando uma abordagem TDD, em seguida, nenhum código é escrito até você escrever um teste para ele, de modo que, por natureza, você tem 100 de cobertura de teste.Claro, só porque cada método é exercida por um teste não significa que toda a sua gama de comportamentos é exercido. SmartInspect fornece um muito fácil método para medir os métodos são chamados, junto com o tempo, etc.É um pouco menos, em seguida, AQTime, mas não é livre.Com mais algum trabalho da sua parte, você pode adicionar instrumentação para medida de cada caminho de código (ramos de instruções "if", etc.) É claro que você também pode adicionar seu próprio log seus métodos para alcançar um relatório de cobertura, e que é livre (bem, esperar por seu tempo, que é provavelmente vale mais, em seguida, as ferramentas).Se você usar JEDI de Depuração, em seguida, você pode receber uma chamada de pilha também.

TDD realmente não pode ser facilmente aplicada de forma retroativa do código existente, sem um monte de refatoração.Embora a mais recente Delphi IDEs ter a capacidade de gerar stubs de teste de unidade para cada método público, que oferece a você 100% de cobertura de seus métodos públicos.O que você colocar os stubs determina o quão eficaz o que é a cobertura.

eu uso Descubra para Delphi E faz o trabalho, para testes de unidade com dunit e testes funcionais com o TestComplete.

O Discover pode ser configurado para executar a partir da linha de comando para automação. Como em:

Discover.exe Project.dpr -s -c -m

Discover funciona muito bem para mim. Dificilmente diminui seu aplicativo, ao contrário do AQTIME. Isso pode não ser um problema para você de qualquer maneira, é claro. Eu acho que as versões recentes do AQTime têm melhor desempenho a esse respeito.

Eu tenho usado o Discover "Durante anos, trabalhei de maneira excelente e incluindo o BDS2006 (que foi a última versão pré-XE* do Delphi que eu usei e ainda uso), mas seu estado atual OpenSourced, não está claro como fazê-lo funcionar com o trabalho com o XE* versões de Delphi. Uma pena realmente, porque eu amei essa ferramenta, rápida e conveniente em quase todos os aspectos. Então agora estou me mudando para a cobertura do código Delphi ...

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