Post: Como implementar seu primeiro teste de software com o DUnitX

Alessandro Medeiros

Fala ai Radizeiros e Radizeiras, tudo bom com vocês?

Você já deve ter se perguntado o que são testes unitários, ou até mesmo você que conhece mas nunca se aventurou por não deter um conhecimento para tal.

Nós programadores estamos sempre escrevendo testes. Um if aqui, um case ali…

Estamos sempre construindo cenários, preocupados se tudo dará certo no final.

Já aconteceu com você de esquecer aquela mensagem de teste “Estou aqui” e o cliente liga perguntando o que é?

Podemos esquecer de remover esses testes do código antes de publicar, devido a correria do dia a dia.

E como podemos amadurecer este processo de forma que cada linha de teste possa ser reaproveitada e aperfeiçoada com o tempo?

O que é esse tal de teste unitário?

Os testes unitários procuram examinar com exatidão a lógica do código.

De grosso modo, testes unitários são exatamente testes de unidades, onde nós vamos testar cada funcionalidade de nosso software.

Iremos ter cada Unit.pas para realizar nossos testes para cada método, classe, termos testes automatizados para validar nosso código.

O que isso é bom?

Isso é bom porque, quando você escreve um método e logo escreve um teste para esse método, você passa a validar que o mesmo método irá funcionar do jeito que você imaginou que deveria.

O que acontece nos software hoje em dia é o famoso mexi num lugar e logo estraguei a funcionalidade em outro lugar do software que usava esta funcionalidade, porque eu fiz uma alteração e não previ que aquilo iria funcionar daquele jeito.

Com o teste unitário podemos criar padrões onde antes de enviar para produção nosso software ele realizar os testes e verifica se todos os testes estão ok.

Para que possamos dar incio devemos ter o nosso DUnitX, e para quem possui as versões mais recentes do Delphi indo no menu Tools|Manage Platforms, ele irá abrir o plataforms selections e em Additional Options você deve marcar o DUnit Unit Testing Freameworks e clicar em Apply como mostra a figura abaixo:

 

 

Mas se você não possui a versão do Delphi mais recente, ou não tem o Manage Platfoms, e não tem o DUnit Instalado em seu Delphi pasta baixar o componente desse link: https://github.com/VSoftTechnologies/DUnitX e instalar.

Então vamos por a mão na massa?

Em nosso exemplo, iremos criar um projeto VCL normal.

Vamos criar uma classe TPessoa onde teremos um método chamado TratarCPFCNPJ, esse método irá limpar tudo aquilo que não é número.


...

type
    TPessoa = class
       function TratarCPFCNPJ(aValue : String) : String;
    end;

...

function TPessoa.TratarCPFCNPJ(aValue: String): String;
var
    I: Integer;
begin
    for I := 1 to Length(aValue) do
    begin
        if aValue[I] in ['0','1','2','3','4','5','6','7','8','9'] then
           Result := Result + aValue[I];
    end;
end;

Como iremos fazer para criar um projeto de teste agora?

O projeto de teste é um projeto separado que irá rodar por fora do projeto que criamos, ele irá usar nossas Units.

Para criarmos nosso primeiro projeto de teste de software só criar conforme já sabemos no menu File|New|Other e na tela “New Items” e em DUnitX|DUnitX Project, conforme a imagem abaixo.

 

 

Ele irá aparecer uma segunda tela, onde estaremos definindo o que irá ser criado para o projeto de teste unitário.

 

 

Após isso ele irá gerar um projeto aparte que terá essa classe que será onde iremos realizar os testes unitários.


type
[TestFixture]
TMyTestObject = class(TObject)
public
[Setup]
procedure Setup;
[TearDown]
procedure TearDown;
end;

implementation

procedure TMyTestObject.Setup;
begin
end;

procedure TMyTestObject.TearDown;
begin

end;

initialization
TDUnitX.RegisterTestFixture(TMyTestObject);
end.

O projeto de teste de software é baseado através de atributos que é colocado em cada classe, em cada método, toda classe de teste têm que possui a estrutura do código acima.

Você pode observar no código do projeto de teste que ele criou dois métodos, Setup e TearDown, elas classes são basicamente o create e o destroy.

A Unit Pessoa é a que iremos testar, iremos testar os métodos dessa classe.


[TestFixture]
TMyTestObject = class(TObject)
private
FPessoa : TPessoa;
public
[Setup]
procedure Setup;
[TearDown]
procedure TearDown;
end;

Para criarmos esse teste devemos criar um método que irá realizar esse teste.

...
[Test] procedure TesteTratarCPFCNPJ;
...
procedure TMyTestObject.TesteTratarCPFCNPJ;
var
    Resultado : String;
begin
    Resultado := FPessoa.TratarCPFCNPJ('123.123.123-12');
    Assert.IsTrue(Resultado = '12312312312', 'TPessoa.TratarCPFCNPJ retornou um erro');
end;

Criamos nosso método e como foi descrito anteriormente que todo método recebe atributos, nosso método recebeu o atributo “[Test]”, isso significa q nosso método será de teste da classe, e ao implementar esse método realizamos o teste da classe Pessoa, colocamos um valor dentro de seu método, sendo que esse método retorna uma string, por este motivo atribuímos a variável Resultado.

Você pode observar que estamos utilizando um atributo do DUnit chamado Assert.isTrue, esse atributo irá validar o resultado de nosso método TratarCPFCNPJ se é verdadeiro, no primeiro momento passamos uma condição Resultado = ‘12312312312’, estamos verificando o resultado correto para a operação  FPessoa.TratarCPFCNPJ(‘123.123.123-12’), e depois passamos uma mensagem se houver um erro ‘TPessoa.TratarCPFCNPJ retornou um erro’.

Agora temos nosso primeiro caso de teste feito.

Ao executar nosso projeto de teste você irá se depara com a tela abaixo:

 

 

Nesta tela ela nos informa que temos um teste e que esse teste passou.

Mas em caso de erro no seu testa irá lhe reportar desta forma.

 

 

Foi realizado um teste, e retornou uma falha, e você pode ver nossa mensagem de erro.

Agora você pode vislumbrar como fazer os testes dentro do seu projeto, testamos um método simples, fizemos esse teste e verificamos se está tudo ok.

Desta forma seu código começa a ficar mais seguro, um código menos suscetível a erro, evitando liberar versões para seus clientes com erro.

Você deve ter em mente que são testes unitários, “testes de unidades”.

Muitas pessoas não conseguem implementar testes unitários em seus projetos pois fizeram seus projetos pensando em testes.

Se você hoje quiser usar testes, suas classes devem ter o minimo possivel de dependências, alta coesão, baixo acoplamento e principio da responsabilidade unica.

 

 

Por que fazer o curso de Teste de Software em Delphi

O treinamento express de Teste de Software é um método que irá te ensinar o que há de mais moderno e prático sobre dominar tecnicas de implementação de testes unitarios no Delphi.

O treinamento de Teste de Software dará a você a oportunidade de melhorar seu desenvolvimento, otimizar o seu tempo e te dar a possibilidade de atender melhor os seus clientes.

Implementar testes unitários em suas aplicações e utilizar todos os seus benefícios irá facilitar muito a sua vida, chega de ouvir de seus cliente “toda atualização é uma surpresa diferente, algo novo não funciona e o que funcionava para de funcionar, não aguento mais isso“, com este curso você estará preparado para entregar uma solução robusta e eficaz.

Nesse treinamento você irá aprender de forma prática a desenvolver rotinas de testes para evitar erros e aumentar a segurança das suas aplicações.

CLIQUE AQUI PARA SABER MAIS SOBRE O CURSO DE TESTE DE SOFTWARE EM DELPHI





Faça sua busca

CATEGORIAS

POSTS RECENTES

E caso você tem interesse de conhecer mais sobre Como implementar seu primeiro teste de software com o DUnitX, acesse o nosso portal do CLUBE DE PROGRAMADORES EM DELPHI
Você não terá só conteúdos relacionados ao Como implementar seu primeiro teste de software com o DUnitX, mas uma quantidade enorme de conteúdos que poderá lhe ajudar muito no seu dia a dia, é uma verdadeira NETFLIX para os programadores Delphi.
Gostou?
Compartilhe:

Embarque no foguete com milhares de devs para aprender desenvolvimento, evoluir de forma contínua e se manter relevante no mercado.

Sobre
Dúvidas
Cadastre-se em nossa lista

Para ter acesso em primeira mão, a tudo que acontece na Academia do Código, basta se cadastrar em nossa lista

Grupo Thulio Bittencourt | Academia do Código

#FaçaPartedaHistória

Copyright © 2022 – Todos os direitos reservados