Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

JUnit Experience

1,315 views

Published on

Uma experiência de implementação de testes unitários usando JUnit 4. Entendendo como testes unitários podem ajudar na evolução do código, e como podemos construindo testes unitários melhores.

Published in: Technology
  • Your GCSE maths program has had a big impact on my revision for the better. You have made everything really simple to understand while still keeping all the necessary information. This is vital to my revision as I can quickly understand the key concept of that type of question and then I can apply it to some practice questions, thus saving me time. Your other book �How To Maximise Your Result In Every GCSE Exam� has greatly helped me in all of my other subjects as I can revise effectively which frees up my time and in class tests I have noticed a significant improvement from getting B and C grades to now getting A and A* grades. Thank you very much for these guides, I wish I had found them sooner! ★★★ https://bit.ly/33W8jmf
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • After many failed attempts, I almost packed in my GCSE maths altogether. But fortunately I didn't, thanks to Jeevan's guide! When I read it, I found out exactly where I was going wrong all this time! I followed his approach and achieved 90% in my next sitting. I was shocked and I thought it was a total fluke so I put his strategy to the test again. This time, I got 100%! Fantastic! If only I came across Jeevan's strategy sooner. Learn more.. ★★★ https://bit.ly/33W8jmf
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Be the first to like this

JUnit Experience

  1. 1. Experience Construindo testes unitários usando JUnit 4
  2. 2. Problemas com bugs?
  3. 3. Testes unitários podem rastreá-los!!!
  4. 4. O JUnit se preocupa em monitorar comportamentos do código
  5. 5. Quando um teste falha,…
  6. 6. é sinal de que precisamos evoluir o código
  7. 7. Geralmente começamos com testes “felizes”…
  8. 8. como por exemplo comparar o resultado de um comportamento com um valor esperado…,
  9. 9. e torcer pra que tudo dê certo!!!
  10. 10. Testes bem construídos garantem uma evolução segura do software
  11. 11. Comportamentos estranhos inseridos no código serão rapidamente identificados
  12. 12. Os casos negativos também são importantes!!!
  13. 13. O importante é tentar identificar o máximo de cenários possíveis, e representar isso através de testes unitários.
  14. 14. Não vamos esquecer das Exceptions…
  15. 15. É importante criar testes que verifiquem a ocorrência de exceções…
  16. 16. pois se o teste quebrar, temos como mapear a origem do problema.
  17. 17. À medida que vamos evoluindo o código, os testes começam a ficar um pouco mais volumosos.
  18. 18. Imagine um teste que cadastra 5 usuários para verificar se eles estão sendo persistidos. Que trabalhera!!!
  19. 19. Já ouviu falar em Data Builders? alguns conhecem como Fixture... Design Pattern responsável por construir objetos de maneira rápida e descritiva
  20. 20. O código de antes... E agora cadastrando 5 usuários!!!
  21. 21. O código… Mostre-me por favor!!!
  22. 22. 1- Um objeto encapsulado 2- Um método estático que chama a fixture 3- Um método que retorna o objeto construído 4- Métodos adicionais que 'setam' os atributos no meio do caminho 5- A corrente só termina quando retorna o usuario
  23. 23. Ainda dá pra emagrecer mais um pouquinho, basta ter um pouco de fé…
  24. 24. Desse jeito fica bem mais fácil de trabalhar… reaproveitar isso em outros testes!!! E o melhor é que ainda dá pra…
  25. 25. Então chega a hora de começar a dividir responsabilidades… Queremos implementar o acesso ao banco mas não queremos que o teste se preocupe com isso… Então vamos deixar isso com o setUp()
  26. 26. @BeforeClass @Before @After @AfterClass Implementam comportamentos para serem utilizados… - BeforeClass: Antes de iniciar a suite de testes - Before: Antes de executar cada teste - After: Depois de executar cada teste - AfterClass: Depois de finalizar a suite de testes
  27. 27. Agora temos uma camada de serviço, que implementa comportamentos sobre Usuario… uma camada de acesso ao banco de dados, que persiste as informações… e um código já bem estruturado e organizado
  28. 28. Mas pare ai!!!
  29. 29. Se eu tiver que acessar o banco de dados a cada teste que fizer, será muito demorado…
  30. 30. Isso não é teste unitário…
  31. 31. Antes de pensar na integração do sistema, precisamos garantir suas unidades!!!
  32. 32. Mas então como é que eu faço???
  33. 33. Gambiarra??? Isso se chama Mock!!! Não…
  34. 34. Mock Object é um padrão de desenvolvimento que simula comportamentos de objetos concretos de uma aplicação ou funcionalidade.
  35. 35. e em vez de acessar o banco de dados, ‘mocamos’ o comportamento com uma lista, ou simplesmente não fazemos nada… Substituímos o UsuárioDao por um Mock Object compatível… que sobrescreve todos os métodos…
  36. 36. Desta maneira garantimos testes simples e coesos… E fica mais fácil de manter a qualidade!!!
  37. 37. Quem sou eu? Renan Uchôa, estudante de Engenharia de Software pela Universidade Federal do Pampa, e Desenvolvedor Java pela uMov.me Tecnologia S.A.

×