Ir para conteúdo
  • Cadastre-se

dev botao
  • Este tópico foi criado há 2975 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Moderadores
 
A Embarcadero adotou um novo formato padrão para os testes.
 
Com a data marcada para o final do suporte oficial para as versões mais antigas do Delphi, como já é de conhecimento da maioria que há muitos pontos a ser observados nessa transição,
gostaria da colaboração e sugestão dos membros e coordenadores.
 
Qual caminho a ser seguido a respeito do assunto do título desse tópico?
 
A minha sugestão seria criar uma unit de compatibilidade entre o DUnit e DUnitX (na verdade já temos essa unit) para que as diversas IDEs possam rodar os testes.

 

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Daniel,

Após um estudo mais especifico nos testes acabei conseguindo fazer os testes rodar sem a unit de compatibilização que havia citado.

Fiz alguns ajustes apenas nos *.dproj

Dessa forma não foi preciso nenhuma intervenção no código fonte em si.

Segue anexo com os fontes um arquivo zipado a pasta toda, dessa forma pode apenas descompactar por cima e comparar as alterações efetuada.

ACBrComumTestCases.dpr

ACBrComumTestCases.dproj

TestesTACrTXTClass.dpr

TestesTACrTXTClass.dproj

ACBrDiversos.dpr

ACBrDiversos.dproj

grpTestesUnitarios.groupproj

Dunit.zip

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Rodei os testes no Sealte e ele apresentou uma falha! fui verificar o problema e no debug o resultado estava correto!

Citar

procedure TAbstractTest.CheckEquals( expected,
                                     actual   : extended;
                                     delta    : extended;
                                     msg      : string = '');
const
  Infinity    =  1.0 / 0.0;
begin
  FCheckCalled := True;
  if not ((expected = Infinity) and (actual = Infinity)) then
    if ((expected = Infinity) and (actual <> Infinity)) or
       ((expected <> Infinity) and (actual = Infinity)) or
       (abs(expected-actual) > delta) then
      FailNotEquals(FloatToStr(expected), FloatToStr(actual), msg, ReturnAddress);
end;

No teste acima foi onde apresentou o erro nos testes, analisando percebi que ele faz essa checagem : 

 or (abs(expected-actual) > delta) then

Então como o teste que apresentou problema foi :

 procedure RoundABNTTest.DoctoABNTRegra2_1;
begin
  CheckEquals( 1.3, RoundABNT(1.3333, 1) );
end;

 

Como RoundABNT entrega uma resultado que é decorrente de uma série de cálculos o retorno não é exato como o teste exige.

Nesse caso foi só acrescentar uma tolerância para que ele rodasse todos os testes.

procedure RoundABNTTest.DoctoABNTRegra2_1;
begin
  CheckEquals( 1.3, RoundABNT(1.3333, 1), 0.00001 );
end;

Aproveitei e registrei um teste que tinha ficado sem registro.

Citar


initialization
  RegisterTest('ACBrComum.ACBrUtil', TiraPontosTest{$ifndef FPC}.Suite{$endif});

  Segue unit alterada.

acbrutiltest.pas

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Curioso que no Lazarus não ocorre esse problema de dizima decimal...

Já no SVN... muito obrigado...

 

Em relação ao tópico anterior, solicitei a ajuda do Elton... pois meu último Delphi é o XE7 (que ainda usa DUNIT)

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Rode ai no XE7 a alteração que fiz foi apenas a inclusão do parâmetro abaixo nos *.dproj.      

<DCC_UnitSearchPath>$(BDS)\Source\DUnit\src;$(DCC_UnitSearchPath)</DCC_UnitSearchPath>

vjea: $(BDS)\Source\DUnit\src 

observe que mesmo no Seatle esta usando DUnit.

Link para o comentário
Compartilhar em outros sites

  • Consultores

Olá Waldir,

 Os arquivos dropj e groupproj não são necessários para os testes. Na verdade eles são específicos para cada versão do Delphi. Eu apenas deixei eles no SVN pois achei que isso facilitaria o seu uso.

  Por isso, faça um teste pra mim, por favor.

  1. Remova os arquivos dproj e groupproj.
  2. Abra os arquivos dpr e execute os testes.
  3. Copie e cole aqui mensagens de erros caso aconteçam.

 

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

  • Moderadores

Elton,

Citar

  -NBC:\Users\Public\Documents\Embarcadero\Studio\17.0\Dcp -NHC:\Users\Public\Documents\Embarcadero\Studio\17.0\hpp\Win32   ACBrComumTestCases.dpr   
[dcc32 Fatal Error] ACBrComumTestCases.dpr(22): F2051 Unit GUITestRunner was compiled with a different version of DUnitX.TestFramework.ITest
Failed

Ele não roda a menos que eu faça como descrevi aqui:

Citar

Rode ai no XE7 a alteração que fiz foi apenas a inclusão do parâmetro abaixo nos *.dproj.      


<DCC_UnitSearchPath>$(BDS)\Source\DUnit\src;$(DCC_UnitSearchPath)</DCC_UnitSearchPath>

vjea: $(BDS)\Source\DUnit\src 

observe que mesmo no Seatle esta usando DUnit.

 

Link para o comentário
Compartilhar em outros sites

  • Consultores

O que está acontecendo é que por algum motivo, o Delphi está se confundindo e utilizando uma unit do DUnitX ao invés do DUnit. O problema de utilizar sua versão dos arquivos dproj é que isso tornaria esses arquivos incompatíveis com as versões anteriores do Delphi.

Fiz um commit para tentar sanar o problema. Favor verificar.

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 2975 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.