Testes unitários em JAVA: Domine JUnit, Mockito e TDD
4.7 (60 ratings)
Instead of using a simple lifetime average, Udemy calculates a course's star rating by considering a number of different factors such as the number of ratings, the age of ratings, and the likelihood of fraudulent ratings.
293 students enrolled
Wishlisted Wishlist

Please confirm that you want to add Testes unitários em JAVA: Domine JUnit, Mockito e TDD to your Wishlist.

Add to Wishlist

Testes unitários em JAVA: Domine JUnit, Mockito e TDD

Conheça boas práticas e aprenda a utilizar as principais ferramentas do mercado, criando os testes desde o início.
4.7 (60 ratings)
Instead of using a simple lifetime average, Udemy calculates a course's star rating by considering a number of different factors such as the number of ratings, the age of ratings, and the likelihood of fraudulent ratings.
293 students enrolled
Last updated 8/2017
Portuguese
Curiosity Sale
Current price: $10 Original price: $65 Discount: 85% off
30-Day Money-Back Guarantee
Includes:
  • 8 hours on-demand video
  • 83 Supplemental Resources
  • Full lifetime access
  • Access on mobile and TV
  • Certificate of Completion
What Will I Learn?
  • Criar uma bateria de testes unitários do ZERO.
  • Criar um projeto e evoluí-lo com a segurança de uma bateria de testes unitários de regressão
  • Isolar o método de teste de dependências externas, podendo definir seu comportamento e validar as interações realizadas
  • Aplicar o básico de TDD
  • Obter métricas de qualidade a partir dos testes (Percentual de aceitação e cobertura de código)
  • Criar builders de objetos para centralizar a criação de entidades
  • Adicionar testes unitários em projetos legados, sem a necessidade de refatoração (Caso não seja possível)
  • Que um código legível é melhor que um código documentado
View Curriculum
Requirements
  • Você deve ter um conhecimento básico de JAVA
Description

Seja bem vindo ao curso de testes unitários em JAVA.

Nesse curso, irei te guiar passo a passo na criação de testes unitários. Não se preocupe, caso ainda seja um conceito novo para você, criaremos os testes desde o início, inclusive, em alguns momentos, não utilizaremos ferramentas alguma, para que os fundamentos sejam melhor assimilados. 

O curso é 100% prático, onde trarei problemas, situações e os erros mais comuns que ocorrem no dia-a-dia, assim poderemos discutir sobre formas de como atuar em cada caso, tentando levantar os prós e contras de cada estratégia disponível.

O código de teste é tão importante quanto o código da aplicação, dessa forma, além das ferramentas e boas práticas, serão apresentadas técnicas que você pode utilizar para deixar o seu código mais enxuto e legível. Um código legível vale mais que um código documentado.

Utilizaremos diversas ferramentas como o JUnit, Mockito, PowerMock, EclEmma (JACOCO) e o Eclipse como IDE de desenvolvimento. Também apresentarei DataBuilders com conceitos de Fluent Interface e ObjectMother para facilitar as criações das entidades nos cenários, inclusive, disponibilizarei uma ferramenta própria que irá automatizar grande parte dessa tarefa de criação. O TDD (Test Driven Development) é uma técnica que funciona muito bem no escopo desse curso, porque não aplicá-la também?

JUnit é uma ferramenta muito poderosa, ela pode ser a base não só para testes unitários. Você poderá utilizá-la em testes de integração e funcionais também.

Material validado ao longo de 6 anos de aulas presenciais em empresas e turmas de especialização.

Ao final desse curso, você terá uma boa base para desenvolver suas aplicações com segurança, sempre com uma bateria de testes de regressão atrelada.

Who is the target audience?
  • Desenvolvedores JAVA que nunca tiveram contato com Testes Unitários
  • Desenvolvedores com experiência em testes podem rever alguns conceitos e discutir sobre boas práticas que serão apresentadas
  • Desenvolvedores que prezam pela qualidade e legibilidade dos códigos
  • Desenvolvedores que já estão cansados de parar o desenvolvimento de novas funcionalidades para corrigir algo que estava funcionando no passado.
Students Who Viewed This Course Also Viewed
Curriculum For This Course
45 Lectures
07:49:06
+
Apresentação
2 Lectures 11:22

Apanhado geral de tudo que veremos ao longo do curso

Preview 04:15

Porque testes unitários? O que são? Como ele se organiza?

Testes Unitários
07:07
+
JUnit
19 Lectures 03:31:18

Nessa aula, vamos criar nosso primeiro teste... Sem ferramenta alguma, será que é possível?

Preview 13:05

Hora de refatorar o teste para utilizar o JUnit, que faz parte da família de frameworks xUnit, mas o que é isso?

JUnit
09:20

Agora que temos o nosso primeiro teste utilizando JUnit, chegou a hora de organizar a casa, colocando os testes no seu lugar.

Organização dos arquivos de teste
08:01

Enfim, vamos falar sobre as assertivas. Cada tipo de variável possui uma forma de se trabalhar, nessa aula veremos as principais formas.

Assertivas
19:49

Nessa aula, vamos conhecer outra forma de se fazer assertivas, utilizando o AssertThat. O que muda? 

P.S.: Falarei sobre o Fluent Interface pela primeira vez, lembre desse nome...

AssertThat
04:01

Nessa aula, vamos discutir formas que podemos dividir um teste. Apresentarei a forma recomendada e a forma que gosto de trabalhar. Vou dar os prós e contras de cada uma, mas a escolha fica por sua conta.

Formas de dividir um teste
06:46

Uma nova restrição será adicionada à nossa aplicação. Mas ela lança exceção, como podemos lidar com esse comportamento?

Tratamento de exceções, parte 1
18:09

Na aula anterior, apresentei três formas para tratar exceção. Qual delas é a melhor forma? Nessa aula veremos onde cada uma se aplicaria melhor

Tratamento de exceções, parte 2
16:58

Nessa aula, vamos refatorar os testes centralizando configurações em comum a todos.

Before e After
10:39

O JUnit não garante a ordem de execução dos testes. Nessa aula veremos como contornar esse problema. Será que isso realmente é um problema?

Ordem de execução dos testes
06:29

Hora do desafio. Ou seja, você resolve e depois confere se eu fiz certo...

Desafio
05:30

Test Driven Development (TDD) é uma técnica de desenvolvimento que casa muito bem com o conteúdo do nosso curso. Nessa aula, veremos o básico dessa técnica.

TDD, parte 1
19:59

Nessa aula, vamos criar uma nova funcionalidade para o nosso projeto... utilizando TDD, claro. Veremos também uma outra forma de dar nomes aos nossos testes.

TDD, parte 2
16:08

Já vimos como adicionar uma funcionalidade utilizando TDD, mas se surgir algum problema para corrigir, o TDD nos ajuda nesse ponto também?

TDD, parte 3
07:23

Na última aula, criamos um teste "instável". O que devemos fazer com ele?

@Ignore e Assumptions
06:44

Nessa aula, vamos refatorar alguns testes para uma estrutura muito mais enxuta e elegante.

Testes parametrizáveis
18:27

Nessa aula, vamos aprender a criar o nosso próprio matcher. Aprecie a beleza que o código ficará ao final.

Matchers Próprios
11:41

Mais um desafio! Você já sabe o que fazer...

Desafio
05:57

Chegou a hora de agrupar os testes em uma suíte. Será que existe outra forma de fazer isso?

Suíte de testes
06:12
+
DataBuilders
2 Lectures 22:50

Criar dados para os testes é algo bem repetitivo. Nessa aula, vou apresentar uma forma de centralizar essa criação e, de brinde, vamos melhorar ainda mais a legibilidade do nosso código.

Criação de dados para os testes
17:37

Nessa aula, vou apresentar uma ferramenta criada por mim que vai automatizar a criação de builders utilizando uma estrutura similar à apresentada na aula anterior.

BuilderMaster
05:13
+
Análise de Cobertura
1 Lecture 09:07

Nessa aula, vamos falar um pouco sobre métricas que podemos obter a partir da execução de testes unitários... Quando que elas são úteis?

Análise de Cobertura
09:07
+
Mocks
10 Lectures 01:56:02

Chegou a hora de adicionar mais complexidade aos nossos testes, vamos colocar uma dependência externa. Por que devemos evitá-las?

Dependências Externas
05:38

Nessa aula, veremos uma maneira bem simples de se isolar nossos códigos das dependências externas.

Objetos Falsos
04:12

Nessa aula, apresentarei um framework para isolar os nossos códigos de dependências externas, o Mockito.

Mockito
03:21

Nessa aula, veremos como simular comportamentos diversos nas dependências externas

Gravando Expectativas
12:58

Além de poder definir comportamentos dinamicamente, os mocks também permitem verificar se a interação dos objetos mockados foram realizadas conforme esperado. Esse é o conteúdo dessa aula...

Verificando Comportamentos
18:41

Nessa aula, apresentarei artifícios para relaxar a verificação dos comportamentos. Será que devemos ser rígidos com os cenários?

Verificando Comportamentos, parte 2
19:57

Chegou a hora da magia... O uso de anotações no mockito simplificam bastante a definição, criação e injeção dos mocks

Anotações
03:58

E se o comportamento esperado para uma dependência for uma exceção? Também podemos definir através de mocks.

Lançando Exceções
14:25

Nessa aula, apresentarei o ArgumentCaptor, que é um recurso do mockito para deixar o uso dos mocks ainda mais dinâmico.

Capturando Argumentos
16:36

Nesse aula, vou apresentar outra anotação do mockito, o @Spy. Ele funciona tipo o @Mock, só que ao contrário. Vou explicar melhor essa diferença...

Spy
16:16
+
PowerMock
7 Lectures 55:31

Finalizamos a seção do Mockito, mas gostaria de levantar algumas restrições do mesmo e apresentar o PowerMock

PowerMock
02:10

Nessa aula, mostrarei como podemos utilizar o PowerMock para mockar construtores.

Mockando Construtores
13:23

Nessa aula, mostrarei como podemos utilizar o PowerMock para mockar métodos estáticos.

Mockando métodos estáticos
08:14

Nessa aula, mostrarei como podemos utilizar o PowerMock para mockar métodos privados.

Mockando métodos privados
08:17

Nessa aula, mostrarei como podemos utilizar o PowerMock para invocar métodos privados diretamente, mesmo que ele não esteja acessível no momento.

Testando métodos privados diretamente
03:22

Nessa aula, vamos discutir se o PowerMock é realmente necessário. Existem problemas com seu uso? O que poderíamos fazer para não necessitar dele?

The dark side of PowerMock
03:17

Nessa aula, vamos refatorar nosso código para escapar da necessidade de uso do PowerMock

Refatorações para substituir o PowerMock
16:48
+
Conteúdos Extras
3 Lectures 42:04

Nessa aula, veremos a motivação para o uso do paralelismo. Criaremos uma estratégia inicial para se executar os testes em paralelo através da criação de um novo Runner, para o JUnit.

Testes em Paralelo, parte 1
16:44

Nessa aula, veremos como executar os testes, via Maven. Através de linha de comando.

Execução dos testes via Maven
05:41

Nessa aula, veremos uma estratégia menos intrusiva para se executar os testes em paralelo.

Testes em Paralelo, parte 2
19:39
+
Encerramento
1 Lecture 00:52

Enfim chegamos ao final do curso. Parabéns!

Conclusão
00:52
About the Instructor
Francisco Wagner Costa Aquino
4.7 Average rating
55 Reviews
293 Students
1 Course
Analista de Testes

Formação e Experiência

Wagner Costa possui graduação em Ciências da Computação, Mestrado na área de previsão de séries temporais com Redes Neurais, ambas pela Universidade Estadual do Ceará (UECE). Trabalha com JAVA há 10 anos, especificamente com testes há 8 anos. Experiência também em desenvolvimento em aplicações Web.

Trabalhos atuais

Integrante da equipe de suporte à automação de testes na DATAPREV. Professor de Testes automatizados e Testes Funcionais em duas especializações em Fortaleza (Faculdade 7 de Setembro - FA7), uma focada em desenvolvimento ágil e a outra em Testes de Software. Dá aulas presenciais há mais de 6 anos e está iniciando na área de aulas à distância.