4.6 out of 5
4.6
995 reviews on Udemy

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.
Instructor:
Francisco Wagner Costa Aquino
3,405 students enrolled
Portuguese [Auto-generated]
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

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.

Apresentação

1
Visão Geral do Curso

Apanhado geral de tudo que veremos ao longo do curso

2
Testes Unitários

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

JUnit

1
Testando sem Ferramenta

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

2
JUnit

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

3
Organização dos arquivos de teste

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

4
Assertivas

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

5
AssertThat

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...

6
Formas de dividir um teste

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.

7
Tratamento de exceções, parte 1

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

8
Tratamento de exceções, parte 2

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

9
Before e After

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

10
Ordem de execução dos testes

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?

11
Desafio

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

12
TDD, parte 1

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.

13
TDD, parte 2

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.

14
TDD, parte 3

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

15
@Ignore e Assumptions

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

16
Testes parametrizáveis

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

17
Matchers Próprios

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

18
Desafio

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

19
Suíte de testes

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

DataBuilders

1
Criação de dados para os testes

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.

2
BuilderMaster

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.

Análise de Cobertura

1
Análise de Cobertura

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?

Mocks

1
Dependências Externas

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

2
Objetos Falsos

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

3
Mockito

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

4
Gravando Expectativas

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

5
Verificando Comportamentos

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...

6
Verificando Comportamentos, parte 2

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

7
Anotações

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

8
Lançando Exceções

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

9
Capturando Argumentos

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

10
Spy

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...

PowerMock

1
PowerMock

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

2
Mockando Construtores

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

3
Mockando métodos estáticos

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

4
Mockando métodos privados

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

5
Testando métodos privados diretamente

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

6
The dark side of PowerMock

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?

7
Refatorações para substituir o PowerMock

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

Conteúdos Extras

1
Testes em Paralelo, parte 1

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.

2
Execução dos testes via Maven

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

3
Testes em Paralelo, parte 2

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

Encerramento

1
Conclusão

Enfim chegamos ao final do curso. Parabéns!

You can view and review the lecture materials indefinitely, like an on-demand channel.
Definitely! If you have an internet connection, courses on Udemy are available on any device at any time. If you don't have an internet connection, some instructors also let their students download course lectures. That's up to the instructor though, so make sure you get on their good side!
4.6
4.6 out of 5
995 Ratings

Detailed Rating

Stars 5
628
Stars 4
283
Stars 3
65
Stars 2
12
Stars 1
8
d26120d9c75bb5ef99a160f4b6765ade
30-Day Money-Back Guarantee

Includes

8 hours on-demand video
Full lifetime access
Access on mobile and TV
Certificate of Completion