Pergunta

Eu estou querendo saber como poucas Delphi usuários aqui estão a fazer os testes de unidade, se for o caso?Não há nada que se integra com a IDE que você encontrou funciona bem?Se não, quais as ferramentas que você está usando e você tem ou conhece exemplo de mini-projetos que demonstram como tudo funciona?

Atualização:

Eu esqueci de mencionar que eu estou usando BDS 2006 Pro, embora às vezes eu cair em Delphi 7, e, claro, outras pessoas podem estar usando outras versões.

Foi útil?

Solução

DUnit é um xUnit tipo de estrutura de teste de unidade para ser utilizada com Delphi win32.Desde o Delphi 2005 DUnit é integrado a um certan ponto para o IDE.Outros DUnit ferramentas de integração para o Delphi IDE pode ser encontrado aqui.DUnit vem com documentação com exemplos.

Outras dicas

Há alguns add-ons para o DUnit, talvez isso é o que vale a pena uma nova entrada na ENTÃO.Dois que eu posso colocar na lista agora são

  1. FastMM4 integração:Testes de unidade irá automaticamente detectar vazamentos de memória (e outras coisas), funciona com DUnit 9.3 e mais recente
  2. OpenCTF é um componente de teste quadro' com base no DUnit, ele cria os testes dinamicamente para todos os componentes do projeto formulários, quadros e datamodules, e testes-los usando regras personalizadas (open source)

Você poderia dar uma olhada na unidade de classes de teste disponível no nosso SynCommons de unidade de código aberto.É usado no nosso Open-Source para testes de regressão.Talvez não a melhor, mas vale a pena dar uma olhada nele.

Ver http://blog.synopse.info/post/2010/07/23/Unit-Testing-light-in-Delphi

A fim de implementar uma unidade de teste, você acabou de declarar um novo caso de teste, criando uma classe como esta:

type
  TTestNumbersAdding = class(TSynTestCase)
  published
    procedure TestIntegerAdd;
    procedure TestDoubleAdd;
  end;

procedure TTestNumbersAdding.TestDoubleAdd;
var A,B: double;
    i: integer;
begin
  for i := 1 to 1000 do
  begin
    A := Random;
    B := Random;
    CheckSame(A+B,Adding(A,B));
  end;
end;

Em seguida, você criar um teste de terno, e executá-lo.

Em cima-para-vir 1.13 versão, há também um novo mecanismo de log, com rastreamento de pilha de algum gerado exceção e tal, assim como MadExcept, usando .mapa conteúdo do arquivo como fonte.

É hoje utilizado pela unidade de classes de teste, de forma que qualquer falha irá criar uma entrada no log com a linha de origem, e de rastreamento de pilha:

C:\Dev\lib\SQLite3\exe\TestSQL3.exe 0.0.0.0 (2011-04-13)
Host=Laptop User=MyName CPU=2*0-15-1027 OS=2.3=5.1.2600 Wow64=0 Freq=3579545
TSynLogTest 1.13 2011-04-13 05:40:25

20110413 05402559 fail  TTestLowLevelCommon(00B31D70) Low level common: TDynArray "" stack trace 0002FE0B SynCommons.TDynArray.Init (15148) 00036736 SynCommons.Test64K (18206) 0003682F SynCommons.TTestLowLevelCommon._TDynArray (18214) 000E9C94 TestSQL3 (163) 

A diferença entre um teste de terno sem registro em log e um teste de terno com o registo só é este:

procedure TSynTestsLogged.Failed(const msg: string; aTest: TSynTestCase);
begin
  inherited;
  with TestCase[fCurrentMethod] do
    fLogFile.Log(sllFail,'%: % "%"',
      [Ident,TestName[fCurrentMethodIndex],msg],aTest);
end;

O mecanismo de log pode fazer mais do que apenas registrar o teste:você pode fazer chamadas recursivas de métodos, selecione as informações que você deseja aparecer nos registros, o perfil do aplicativo do lado do cliente, redação publicado propriedades, TList ou TCollection conteúdo como JSON para o conteúdo do log, e assim por diante...

A primeira vez .o arquivo de mapa é lido, um .mab arquivo é criado, e conterá todas as informações de símbolo necessário.Você pode enviar o .mab arquivo com o .exe para o seu cliente, ou até mesmo incorporar seu conteúdo ao .exe.Isso .mab arquivo é otimizado:um .mapa de 927,984 bytes comprime em um 71,943 .mab arquivo.

Portanto, esta unidade poderia ser reconhecido como o filho natural de DUnit e MadExcept de casamento, em puro OpenSource.:)

Informações adicionais disponível no nosso fórum.Sinta-se livre para perguntar.Comentários e solicitações de recurso sejam bem-vindos!Funciona a partir do Delphi 6 até XE.

DUnit2 está disponível a partir da http://members.optusnet.com.au/~mcnabp/

DUnit2 é modificado de forma mais regular do que o original dunit.Ele também funciona no Delphi 2009.

Tente: http://sourceforge.net/projects/dunit2/ - ele se moveu como o autor original de Peter McNab faleceu há vários anos.Ainda alguma atividade no dunit lista de correio.

Há uma nova unidade de framework de testes para os modernos versões do Delphi no desenvolvimento: https://github.com/VSoftTechnologies/DUnitX

Normalmente eu criar um projeto de teste de Unidade (File->New->Other->Teste de Unidade->Projeto de Teste).Ele contém as coisas que eu preciso, pelo que foi bom o suficiente até agora.

Eu uso o delphi 2007, então eu realmente não sei se isso está disponível em 2006.

Nós fazemos o teste de unidade de toda a lógica de código usando o DUnit e usar o código profiler de cobertura incluída na AQTime para verificar que todos os caminhos através de código são executadas pelos testes.

Temos duas abordagens, em primeiro lugar, temos Dunit testes que são executados comprar os desenvolvedores - estes certifique-se de que o código que foi alterado continua a funcionar como antes.A outra abordagem é a utilização de CruiseControl.NET para criar executáveis e, em seguida, execute o dunit testes toda vez que uma alteração é feita, para garantir que não há consequências não intencionais da alteração.

Muito do nosso codebase não tem testes, de modo a testes automáticos são um caso de contínuo desenvolvimento, a fim de garantir que nossos aplicativos funcionam como nós pensamos que eles deveriam.

Nós tentamos usar DUnit com Delphi 5, mas não funcionou bem.Especialmente se você estiver implementando interfaces COM, encontramos muitas dependências para instalação de toda a infra-estrutura de teste.Eu não sei se o teste de apoio tem melhorado em versões mais recentes.

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