Jump to content

Usando Cobertura de Código para Delphi integrado com Jenkins


Postagens Recomendadas

  • Administradores

Tópico originalmente criado por: @Jonathan Santos

Quando criamos uma suite de teste de uma Unit/Projeto em delphi, verificar se todos os métodos de todas as classes estão sendo cobertos por testes pode ser difícil. Por isso, para auxiliar nesta tarefa, podemos utilizar a ferramenta delphi-code-coverage.

O primeiro passo para seu uso é encontrar onde está o código fonte e onde está sua unit de testes(procure pelo projeto criado para os testes). Com estas informações em mãos faça o download do delphi-code-coverage coloque-o no diretório onde o .exe da sua aplicação de teste é gerado.

Crie dois arquivos de texto com o nome de dcov_paths.lst e dcov_units.lst. Podemos utilizar a ferramenta Delphi-code-coverage-wizard para gerar a estrutura inicial desses arquivos .

O primeiro arquivo ( dcov_paths.lst ) contém o caminho para o código-fonte. Por exemplo :

C:\desenvolvimento\componentes\teste\

C:\desenvolvimento\componentes\teste2\

C:\desenvolvimento\componentes\teste\teste3

O segundo arquivo( dcov_units.lst ) contém os nomes das units que você deseja verificar a cobertura. Por exemplo :

testeIC

unitTeste

unitController

Para que o relatório dos dados possa ser utilizado corretamente é necessário que o seu projeto esteja gerando o arquivo .map detalhadamente. Para configurar essa propriedade em seu projeto, entre nas opções e selecione a opção Linking. Depois, na opção Map File , escolha Detailed .

5e845cca6f281e3a5acd4e4e21468ff5e3cdf6c5

 

Depois disso criamos um arquivo .bat ( dcov_execute.bat ) que executará o comando usando o code coverage :

CodeCoverage.exe -e “NomeDoExe.exe” -m “NomeDoExe.map” -uf dcov_units.lst -spf dcov_paths.lst -od “emma” -lt -emma -meta -xml -html

O uso e significado de cada comando e alguns outros podem ser encontrados no site onde fizemos o download do CodeCoverage.

Rode o ponto .bat (depois de compilar a suite de teste que configurada no bat). Depois da execução dos testes, ele será gerado um arquivo CodeCoverage_summary.html no diretório configurado no arquivo .bat.

 

 

Neste arquivo são gerados links para os arquivos específicos de cada unit contendo suas linhas de cobertura.

 

13e8592aa8bff90f41aedd994e0660fbcf597eda
 

As linhas amarelas são as que não são possíveis ser testadas, as verdes são as já cobertas pelos testes e as azuis são as que ainda não são cobertas por testes.

O que é o Jenkins?

O Jenkins é uma ferramenta de Integração contínua 2 usada para verificar modificações feitas nas funcionalidades de um software em um curto tempo de sua implementação. Veja mais sobre Jenkins em https://wiki.jenkins-ci.org/display/JENKINS/Meet+Jenkins 3 .

Como integrar com o Jenkins?

Vá até o menu do projeto que deseja inserir o report e selecione a opção configurar.

 

46ee1f2b6dde2fdd8f1117c5e48bff57791f27d0
 

Selecione a opção “Add post-build action”, que adiciona opções depois que ele executar o projeto. Depois selecione a opção “Publish HTML reports”.

 

79ab68bb68072c46227bc13a13d3a6211c30213c

 

Clique no botão “Adicionar” e insira o diretório dos arquivos HTML e o nome do report gerado que no caso do CodeCoverage é CodeCoverage_summary.html. Depois clique em salvar no fim da mesma página.

 

43fa6c3b7e8d71f68f91fe77c872e52087a76166

Volte ao projeto e a opção de HTML Report estará visível, sendo ela um link para o relatório gerado pelo Code Coverage.

 

d406b2add9c3b1859ad7a731e8d9a2351e970367
 

Referências:

http://thundaxsoftware.blogspot.com.br/2013/02/using-delphi-code-coverage.html

https://code.google.com/p/delphi-code-coverage/

https://code.google.com/p/delphi-code-coverage-wizard/

http://en.wikipedia.org/wiki/Continuous_integration

https://wiki.jenkins-ci.org/display/JENKINS/Meet+Jenkins

Link to comment
Compartilhe em outros sites

Crie uma conta ou entre para comentar 😀

Você precisa ser um membro para deixar um comentário.

Crie a sua conta

Participe da nossa comunidade, crie sua conta.
É bem rápido!

Criar minha conta agora

Entrar

Você já tem uma conta?
Faça o login agora.

Entrar agora


×
×
  • Create New...