Loading AI tools
Da Wikipédia, a enciclopédia livre
O JUnit é um framework open-source, que se assemelha ao raio de testes software java, criado por Erich Gamma e Kent Beck, com suporte à criação de testes automatizados na linguagem de programação Java.
Esse framework facilita a criação e manutenção do código para a automação de testes com apresentação dos resultados. Com ele, pode ser verificado se cada método de uma classe funciona da forma esperada, exibindo possíveis erros ou falhas podendo ser utilizado tanto para a execução de baterias de testes como para extensão.
Com JUnit, o programador tem a possibilidade de usar esta ferramenta para criar um modelo padrão de testes, muitas vezes de forma automatizada.
O teste de unidade testa o menor dos componentes de um sistema de maneira isolada. Cada uma dessas unidades define um conjunto de estímulos (chamada de métodos), e de dados de entrada e saída associados a cada estímulo. As entradas são parâmetros e as saídas são o valor de retorno, exceções ou o estado do objeto. Tipicamente um teste unitário executa um método individualmente e compara uma saída conhecida após o processamento da mesma. Por exemplo:
Assert.assertEquals(2, algumMetodo(1));
A expressão acima verifica se a saída de algumMetodo() é 2 quando esse método recebe o parâmetro 1. Normalmente o desenvolvedor já realiza testes semelhantes a esse pequeno exemplo, o que é chamado de testes unitários em linha. Assim sendo, o conceito chave de um teste de unidade é exercitar um código e qual o resultado esperado.
O JUnit permite a realização de testes de unidades, conhecidos como "caixa branca", facilitando assim a correção de métodos e objetos.
Algumas vantagens de se utilizar JUnit:
A experiência adquirida com o JUnit tem sido importante na consolidação do Test Driven Development (desenvolvimento direcionado a testes). Além disso, ele foi adaptado a outras linguagens, tais como C♯ (NUnit), Python, Fortran, e C++.
Caso de teste bem simples para mostrar como o JUnit 3.8 funciona:
import junit.framework.TestCase;
// Todo caso de teste deve herdar características de TestCase.
public class SampleTest extends TestCase {
private java.util.List<Object> listaVazia;
/**
* Este método será chamado antes de cada método de teste.
*/
protected void setUp() {
listaVazia = new java.util.ArrayList<Object>();
}
/**
* Após cada método de teste, este método é invocado para limpar o lixo.
*/
protected void tearDown() {
listaVazia = null;
}
/**
* Todo método que começar com a palavra "test" será executado pelo JUnit.
* O método testComportamento faz uma chamada ao método assertEquals(mensagem, valor
* esperado, valor atual) que verifica se o resultado de "listaVazia.size()" (tamanho da
* lista) é igual a 0 (zero) que é o valor esperado, caso contrário emite a mensagem.
*/
public void testComportamento() {
assertEquals("A lista vazia deve ter 0 elementos", 0, listaVazia.size());
}
/**
* Este método está testando a exceção. Ela deve ser lançada, pois existe
* nenhum item na lista. Caso contrário a implementação tem problemas.
*/
public void testForException() {
try {
Object o = listaVazia.get(0);
fail("Deve levantar uma IndexOutOfBoundsException");
} catch (IndexOutOfBoundsException success) {
// Sucesso
}
}
}
O mesmo teste para JUnit 4.0:
// imports reorganizados para a versão 4.0
import org.junit.Assert;
import org.junit.Test;
import org.junit.Before;
import org.junit.After;
// Não necessita herdar nada.
public class SampleTest {
private java.util.List<Object> listaVazia;
/**
* Este método será chamado antes de cada método de teste.
*/
@Before
protected void inicializar() {
listaVazia = new java.util.ArrayList<Object>();
}
/**
* Após cada método de teste, este método é invocado para limpar o lixo.
*/
@After
protected void terminou() {
listaVazia = null;
}
/**
* Todo método com a anotação @Test será executado pelo JUnit.
* O método comportamento faz uma chamada ao método assertEquals(mensagem, valor
* esperado, valor atual) que verfica se o resultado de "listaVazia.size()" (tamanho da
* lista) é igual a 0 (zero) que é o valor esperado, caso contrário emite a mensagem.
*/
@Test
public void comportamento() {
Assert.assertEquals("A lista vazia deve ter 0 elementos", 0, listaVazia.size());
}
/**
* Este método está testando a exceção. Ela deve ser lançada, pois não existe
* nenhum item na lista. Caso contrário a implementação tem problemas.
*/
@Test(expected=IndexOutOfBoundsException.class)
public void lancarException() {
listaVazia.get(0);
}
}
Exemplo de classe de testes usando versões anteriores a 3.8:
import junit.framework.TestCase;
public class TesteMultiplica extends TestCase {
public void testMultiplication() {
// Testando se 2*2=4:
assertEquals("Multiplica", 4, 2 * 2);
}
}
O Mesmo exemplo utilizando o JUnit 4.0:
import org.junit.Assert;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
public class TesteMultiplica {
@Test
public void multiplication() {
// Testando se 2*2=4:
assertEquals("Multiplica", 4, 2 * 2);
}
}
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.