
Apanhado geral de tudo que veremos ao longo do curso
Porque testes unitários? O que são? Como ele se organiza?
Nessa aula, vamos criar nosso primeiro teste... Sem ferramenta alguma, será que é possível?
Hora de refatorar o teste para utilizar o JUnit, que faz parte da família de frameworks xUnit, mas o que é isso?
Agora que temos o nosso primeiro teste utilizando JUnit, chegou a hora de organizar a casa, colocando os testes no seu lugar.
Enfim, vamos falar sobre as assertivas. Cada tipo de variável possui uma forma de se trabalhar, nessa aula veremos as principais formas.
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...
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.
Uma nova restrição será adicionada à nossa aplicação. Mas ela lança exceção, como podemos lidar com esse comportamento?
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
Nessa aula, vamos refatorar os testes centralizando configurações em comum a todos.
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?
Hora do desafio. Ou seja, você resolve e depois confere se eu fiz certo...
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.
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.
Já vimos como adicionar uma funcionalidade utilizando TDD, mas se surgir algum problema para corrigir, o TDD nos ajuda nesse ponto também?
Na última aula, criamos um teste "instável". O que devemos fazer com ele?
Nessa aula, vamos refatorar alguns testes para uma estrutura muito mais enxuta e elegante.
Nessa aula, vamos aprender a criar o nosso próprio matcher. Aprecie a beleza que o código ficará ao final.
Mais um desafio! Você já sabe o que fazer...
Chegou a hora de agrupar os testes em uma suíte. Será que existe outra forma de fazer isso?
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.
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.
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?
Chegou a hora de adicionar mais complexidade aos nossos testes, vamos colocar uma dependência externa. Por que devemos evitá-las?
Nessa aula, veremos uma maneira bem simples de se isolar nossos códigos das dependências externas.
Nessa aula, apresentarei um framework para isolar os nossos códigos de dependências externas, o Mockito.
Nessa aula, veremos como simular comportamentos diversos nas dependências externas
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...
Nessa aula, apresentarei artifícios para relaxar a verificação dos comportamentos. Será que devemos ser rígidos com os cenários?
Chegou a hora da magia... O uso de anotações no mockito simplificam bastante a definição, criação e injeção dos mocks
E se o comportamento esperado para uma dependência for uma exceção? Também podemos definir através de mocks.
Nessa aula, apresentarei o ArgumentCaptor, que é um recurso do mockito para deixar o uso dos mocks ainda mais dinâmico.
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...
Finalizamos a seção do Mockito, mas gostaria de levantar algumas restrições do mesmo e apresentar o PowerMock
Nessa aula, mostrarei como podemos utilizar o PowerMock para mockar construtores.
Nessa aula, mostrarei como podemos utilizar o PowerMock para mockar métodos estáticos.
Nessa aula, mostrarei como podemos utilizar o PowerMock para mockar métodos privados.
Nessa aula, mostrarei como podemos utilizar o PowerMock para invocar métodos privados diretamente, mesmo que ele não esteja acessível no momento.
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?
Nessa aula, vamos refatorar nosso código para escapar da necessidade de uso do PowerMock
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.
Nessa aula, veremos como executar os testes, via Maven. Através de linha de comando.
Nessa aula, veremos uma estratégia menos intrusiva para se executar os testes em paralelo.
Enfim chegamos ao final do curso. Parabéns!
Seja bem vindo ao curso de testes unitários em JAVA usando JUnit 4.
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.