Pergunta

Temos um grande projeto Delphi (1,5 milhão de linhas de código) e estamos passando a usar processos ágeis.

Já temos um ambiente de integração contínua (FinalBuilder) que atualizei para incluir testes de unidade (Dunit) e métricas de código (CodeHealer) nos e-mails para todos em nossa equipe de desenvolvimento. Nossa cobertura de teste de unidade não é ótima, então agora estou tentando colocar o Aqtime no mix para obter alguns resultados de cobertura de teste em todas as compilações.

Estou usando a tarefa "Execute Program" para executar o executável do teste de unidade, registrar os resultados e analisar o arquivo posteriormente. Pretendo usar a tarefa "Run Script" para executar o AqTime (via COM) e exportar os resultados para o XML para poder analisar esses resultados.

O problema que tenho é com o AQTime executando o executável do teste de unidade, perco a capacidade de monitorar o executável do teste de unidade diretamente. Eu gostaria de fazer com que o FinalBuilder analise os resultados de ambas as tarefas. Alguém sabe como obter acesso aos resultados do Dunit quando é chamado do Aqtime?

Foi útil?

Solução

Corremos pelo mesmo caminho e não executamos o teste de dunit do Aqtime,

Em vez disso, construímos e executamos nossos testes de dunit usando o FinalBuilder.

Nossos testes de unidade usam xmltestrunner, então podemos saber se o teste falha ou não com muita facilidade usando uma consulta XPath no arquivo XML resultante.

Atualizar: Uma atualização recente do FinalBuilder 7.0 agora suporta Dunit. É através de seu próprio xmltestrunner.pas, que está no diretório FinalBuilder após a instalação. Esse corredor gera o teste resulta no mesmo formato que o Nunit. Em seguida, ele se integra muito bem ao servidor FinalBuilder.

Outras dicas

Você está descrevendo a configuração que estamos evoluindo lentamente.

  • Os testes de dunit são compilados como aplicativos de console usando o TtextTestListener definido na unidade TextTestRunner.
  • O CI Server é um script CMD que cria todos os projetos e executa todos os testes.
  • A saída dos testes é canalizada para um arquivo.

Uma solução Pode ser ter o perfil do AQTIME, esses aplicativos de console, enquanto ainda conseguirem colocar os resultados para um arquivo que pode ser analisado depois?!

Outra solução Pode ser implementar seu próprio objeto de listener e fazer com que esse objeto escreva os resultados de testes no evento, diretamente para um arquivo de log, um banco de dados ou onde quiser e que isso seja escolhido pela FinalBuilder.

Em vez de ter algo assim no seu arquivo de projeto

  Application.Initialize;
  if System.IsConsole then TextTestRunner.RunRegisteredTests
  else GUITestRunner.RunRegisteredTests;

se tornaria algo assim

  Application.Initialize;
  if System.IsConsole then OurEventLogTestRunner.RunRegisteredTests
  else GUITestRunner.RunRegisteredTests;
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top