TDD - Desenvolvimento Orientado A Testes Com Delphi - Delphi Clean Code
TDD - Desenvolvimento Orientado A Testes Com Delphi - Delphi Clean Code
TDD é uma das formas de manter seu código funcionando seguramente mesmo que sejam
feitas mudanças radicais no projeto. O primeiro passo, onde é requisito escrever um teste
antes de ter o código final desenvolvido no projeto, certamente é o ponto mais difícil de
entendimento entre profissionais e equipes que ainda não conhecem esta técnica.
O fato é que nesta primeira etapa é justamente onde você vai entender dentre muitas outras
coisas, que terá uma regra seguramente funcionando antes de partir para o desenvolvimento
do código.
Como assim? Você está me dizendo que “do nada” eu tenho que codificar uma regra?
Você ainda pode estar se perguntando: “Se eu ainda não tenho o código que funciona, como terei
um teste para ele?”
Eu lhe digo, justamente! A regra no caso do TDD é justamente ter um teste que ainda não
funcione, para que você passe para a segunda etapa que é “Criar um código que faça seu teste
funcionar”, certo?
Para que isto se torne possível, neste texto irei falar do uso do framework DUnitX.
DUnitX é um framework open-source que pode ser utilizado no Delphi a partir da versão 2010.
Ele é baseado em frameworks como NUnit e xUnit, contendo inúmeros métodos para
implementação de testes unitários de suas classes e métodos. DUnitX utiliza métodos
anônimos e generics. Existem muitos artigos e videos com exemplos práticos a serem
explorados, a princípio você pode conhecer um pouco mais sobre este framework, conceitos e
métodos a serem utilizados em:
http://docwiki.embarcadero.com/RADStud…/…/en/DUnitX_Overview
Ok, mas voltando ao texto, isso pode não está bem claro ainda, então vamos ao tal código do
teste.
Antes quero lhe dizer que cada teste, deve ser baseado em uma regra compreendida pela
análise do problema a ser resolvido, então vamos ver um exemplo comum para iniciar.
Caso do teste:
Mas isto não impede a criação dos métodos de teste, pois é justamente o que deve ser feito
quando se trabalha com TDD, Desenvolvimento Orientado a Testes!
Verde: Este método Setup serve para que seja executado algo para cada método
de teste, isto ajuda para que você separe a parte de inicialização de variáveis e
instancias de objetos e deixe seu código somente com a regra a ser testada.
Vermelho: É outro método a ser executado, desta vez após todo método de teste
que for implementado. Assim como o Setup, neste método, você pode liberar
possíveis objetos da memória e até executar outros procedimentos como finalizar
uma conexão por exemplo.
Amarelo: Este é o primeiro método de teste conforme nosso caso relatado acima!
No framework de testes DUnitX, existe a classe Assert que contém inúmeros métodos para
que possa ser feito várias condições, para nosso caso, foi utilizado o
método WillRaiseWithMessage (a grosso modo quer dizer: Irá(deverá) levantar uma exceção
contendo a seguinte mensagem). Para este método, podem ser passados os seguintes
parâmetros:
1 – Um procedimento anônimo com uma implementação que deverá ser a
mesma utilizada no sistema, ou seja, Inicia uma venda e Finaliza uma venda,
neste caso sem lançar nenhum item, assim como previsto no Caso de teste.
2 – Uma classe de exceção, pode ser nil caso não tiver nenhuma específica.
3 – A mensagem que será esperada pelo sistema ao ocorrer o caso do teste. Esta
mensagem tem que ser exatamente a mesma, caso contrário o teste irá falhar.
Pronto! Assim concluímos a primeira etapa do teste, este teste já pode ser executado e deverá
dar errado, é isso que precisamos fazer até o momento.
Agora sim já podemos partir para o segundo passo que é justamente fazer isto acontecer em
nossa classe, consequentemente na aplicação onde ela será utilizada.
O que precisamos fazer é simplesmente codificar nossa classe para que dispare uma exceção
com a mensagem esperada pelo teste, então observe um exemplo de como isto pode ser feito
na classe TVenda:
Assim, ao chamar o método Finalizar, será verificado se existem itens lançados, caso não
existam é disparado a exceção com a mensagem correspondente.
A partir deste modelo, você já pode criar outros testes unitários para sua classe, não há limites
para isto, o ideal é que sejam atendidos 100% dos possíveis casos de sua aplicação, quanto
mais casos forem atendidos melhor!
Bom, isto está longe de ser um material completo sobre testes unitários, porém já é o
suficiente para que você conheça como irá finalmente garantir que sua aplicação se torne
segura independente da mudança sofrida durante a vida do projeto
É isso ai, muito obrigado por ler este artigo e não para por aqui, estou editando alguns videos
onde certamente falarei mais sobre testes :d
Obrigado.
Sponsored Content
[Fotos] Famosos que [Fotos] Aos 55 anos, 30+ Piores Alimentos Que
largaram a fama por Padre Marcelo Rossi vive Consumimos Diariamente
empregos normais no luxo Revista Investing | Sponsored
Revista Investing | Sponsored Revista Investing | Sponsored
Você sente dores na Pessoas que sofrem com [Fotos] Essa prisão é uma
lombar ou nas costas? ronco devem ler isso. das mais famosas do
Então precisa conhecer… Solução é simples. mundo por um motivo…
portadanoticia.com.br | Sponsored especiariasorientais.com.br | Sponsored Revista Investing | Sponsored
Se todos os sistemas fizessem o uso de técnicas assim o mundo seria melhor kakaka
Curtir
Parabéns pelo post, muito bem explicado, eu ainda não tinha utilizado o dunit em meus
projetos, mas pelo seu post me incentivou a aplicar, espero novos post sobre o tdd.
Curtir
Obrigado! TDD é muito bom, fico feliz que tenha lhe motivado, com certeza virão mais
conteúdos sobre o assunto, continue acompanhando os canais e aproveite para assinar o
Blog e receberá em primeira mão as novidades. Valeu!
Curtir
Conde
29 29+00:00 abril 29+00:00 2017 às 15:51
n veja como critica, mas li o seu post e n me senti convencido em usar TDD.
n qro dizer q é ruim ou coisa do tipo, mas ainda n vi algo q fizesse sentido para mim, talvez o
exemplo n tenha sido bom (no meu caso), sugere algum outro conteudo ou pretende lancar
algo mais sobre?
Curtir
Recentemente tuitei a seguinte frase sobre TDD: “E se você pudesse testar antes de tomar
decisões em sua vida?” , talvez isso lhe ajude a refletir sobre o uso de TDD.
E claro, pretendo sim escrever muito sobre TDD, inclusive estou preparando uma série de
videos e artigos, onde tentarei levar ao conhecimento de testes utilizando exemplos reais do
dia a dia. Estou envolvido em projetos que não me permite as publicações no tempo que
gostaria. Aproveito e lhe peço para ue se tiver exemplos em seu seguimento que queira
questionar como seria o uso do TDD, estou a disposição para tentar esclarecer e quem sabe
até um material como estudo de caso.
Curtir