JUnit é um framework de testes unitários para a linguagem de programação Java. Criado por Kent Beck e Erich Gamma, o JUnit tem sido largamente utilizado em corporações com o objetivo de ampliar a testabilidade de componentes de Software desenvolvidos em Java.
A principal unidade de desenvolvimento no JUnit é o teste unitário. Ele torna possível o desenvolvimento de testes pelo desenvolvedor para verificar as operações básicas sendo desenvolvidas. Na construção dos testes unitários, existe um custo temporal de investimento a ser dado pelo codificador da funcionalidade (ou unidade funcional, método, etc.). Porém este investimento é diluído no momento em que o sistema começa a se compor de dezenas, milhares ou até dezenas de milhares de classes.
As principais vantagens do JUnit incluem:
- Facilmente integrável com as IDEs Java já existentes (Eclipse, Netbeans, JBuilder, etc.).
- API fácil de usar, composta de métodos de verificação (assertXXX()) e métodos de preparo (setUp() e tearDown()) disponíveis e já implementados e prontos para uso.
- O código de testes pode ser fisicamente separado do código da aplicação, evitando que trechos de testes dentro do código da aplicação possam alterar o comportamento da mesma.
- Gratuito
- Testes específicos (suites) podem ser executados para partes específicas da aplicação.
- A construção de testes nos auxilia na definição das interfaces das classes (métodos públicos), optando em esconder detalhes da implementação de algumas funcionalidades.
- Com a existência dos testes, bugs podem ser encontrados mais rapidamente (apenas uma execução dos testes), especialmente quando ocorrem alterações pelo desenvolvedor ou por terceiros.
- Usado no desenvolvimento vontado para testes (test driven development), onde os testes são codificados antes do código da unidade funcional (método).
- Pode ser usada como métrica de qualidade do software no que diz respeito a requisitos funcionais sendo contemplados na aplicação
Terminologia:
- Test fixture: inicializadores de objetos que serão testados, sempre executado a cada teste unitário. Por exemplo, se o método saque da classe ContaBancaria será testado, este bloco criará um objeto de ContaBancaria que possibilitará o teste do saque.
- Unit test: teste unitário de uma única classe Java. Geralmente cria-se uma classe de teste unitário para cada classe Java e um método de teste para cada método público da classe.
- Test case: caso de teste que é implementado para cada método público da classe
- Test Suite: conjunto de testes
- Test runner: executador dos testes e que também mostra os resultados dos mesmos.
As principais classes do framework JUnit:
Processo de desenvolvimento com testes:
- O teste é criado para definir algum aspecto do problema a ser testado, este contendo algum código simples para que ele passe.
- Um segundo teste é criado para cobrir todas as possibilidades possíveis na funcionalidade desenvolvida.
- Novos testes são criados até que não haja nenhum método público da classe sem testes (cobertura de 100%)
Exemplo de teste:
Dado a classe Java abaixo:
A seguinte classe de testes unitários pode ser escrita:
Executando os testes unitários em uma IDE (nesta caso o Eclipse), o resultado dos testes pode ser acompanhado através da aba JUnit, conforme mostrada abaixo.
Links:



