Skip to content

Latest commit

 

History

History
78 lines (52 loc) · 4.61 KB

File metadata and controls

78 lines (52 loc) · 4.61 KB

Digital Innovation: Expert class - Desenvolvimento de testes unitários para validar uma API REST de gerenciamento de estoques de cerveja.

Nesta live coding, vamos aprender a testar, unitariamente, uma API REST para o gerenciamento de estoques de cerveja. Vamos desenvolver testes unitários para validar o nosso sistema de gerenciamento de estoques de cerveja, e também apresentar os principais conceitos e vantagens de criar testes unitários com JUnit e Mockito. Além disso, vamos também mostrar como desenvolver funcionalidades da nossa API através da prática do TDD.

Durante a sessão, serão abordados os seguintes tópicos:

  • Baixar um projeto através do Git para desenolver nossos testes unitários.
  • Apresentação conceitual sobre testes: a pirâmide dos tipos de testes, e também a importância de cada tipo de teste durante o ciclo de desenvolvimento.
  • Foco nos testes unitários: mostrar o porque é importante o desenvolvimento destes tipos de testes como parte do ciclo de desenvolvimento de software.
  • Principais frameworks para testes unitários em Java: JUnit, Mockito e Hamcrest.
  • Desenvolvimento de testes unitários para validação de funcionalides básicas: criação, listagem, consulta por nome e exclusão de cervejas.
  • TDD: apresentação e exemplo prático em 2 funcionaliades importantes: incremento e decremento do número de cervejas no estoque.

Para executar o projeto no terminal, digite o seguinte comando:

mvn spring-boot:run 

Para executar a suíte de testes desenvolvida durante a live coding, basta executar o seguinte comando:

mvn clean test

Após executar o comando acima, basta apenas abrir o seguinte endereço e visualizar a execução do projeto:

http://localhost:8080/api/v1/beers

Um pouco de historia

O que é Desenvolvimento Orientado a Testes (TDD)?

Desenvolvimento Orientado a Testes é um processo que modifica o paradigma do desenvolvimento de softwares tradicional. Em vez de desenvolver, primeiramente, seu código e ajustá-lo de maneira retroativa para validá-lo, o TDD determina que os testes sejam escritos antes e que as adaptações sejam, só depois, aplicadas ao código até que o projeto atenda aos requisitos do teste já definido.

Resumindo

  • Crie o teste
  • Execute e verifique as falhas apontadas
  • Implemente as alterações até não ter mais falhas.

Piramide de testes

A função da pirâmide de testes é basicamente definir níveis de testes e te dar um norte quanto à quantidade de testes que você deveria ter em cada um desses níveis.

No topo da pirâmide, temos os testes de ponta a ponta (end to end ou e2e, pra resumir). O objetivo deles é imitar o comportamento do usuário final nas nossas aplicações (seja ele uma pessoa, uma api, ou qualquer outro tipo de cliente). Na base, temos os testes de unidade, onde verificamos o funcionamento da menor unidade de código testável da nossa aplicação. Entre essas duas camadas, temos os testes de integração. A ideia deles é verificar se um conjunto de unidades se comporta da maneira correta, só que de forma menos abrangente do que os testes de ponta a ponta.

Pré-requisitos

São necessários os seguintes pré-requisitos para a execução do projeto desenvolvido durante a aula:

  • Java 14 ou versões superiores.
  • Maven 3.6.3 ou versões superiores.
  • Intellj IDEA Community Edition ou sua IDE favorita.
  • Controle de versão GIT instalado na sua máquina.
  • Muita vontade de aprender e compartilhar conhecimento :)

Abaixo, seguem links bem bacanas, sobre tópicos mencionados durante a aula:

Neste link, seguem os slides apresentados como o roteiro utilizado para o desenvolvimento do projeto da nossa sessão.