framework para desenvolvimento e execução de testes de unidade em programas java
TRANSCRIPT
Plano de teste
JUnit
framework para desenvolvimento e execução de testes de unidade em programas Java.
O que é e para que serve?
http://junit.org/
O Eclipse já vem com o JUnit.
Onde Encontrar?
Adicionar o junit.jar ao projeto
No EclipseProject > Properties > Java Build Path > Libraries > Add Library > JUnit
Como configurar?
Classes de Teste devem herdar de TestCase.
import junit.framework.TestCase;
Métodos de teste devem começar com o prefixo “test”
public void setUp() {...}public void testxxx() {...}public void tearDown() {...}
Como Implementar?
Todos as classes de teste devem herdar de TestCase?
Todos os métodos devem ter em seu nome o prefixo “test”?
Pergunta?
A partir do JUnit 4 pode-se escolher não utilizar herança da classe TestCase e o prefixo “test” dos métodos.
Nova Implementação
•Os casos de teste agora são marcados com as anotações @Test.
•Você não precisa mais colocar o prefixo “test” nos métodos.
•Além disso, sua classe não precisa herdar de “TestCase”.
@Test
@Testpublic void somar() {
assertEquals(12, simpleMath.add(7, 5));}
@Testpublic void subtrair() {
assertEquals(9, simpleMath.substract(12, 3));
}
• Use as anotações @Before e @After para os métodos “setup” e “tearDown” respectivamente. Eles irão rodar antes e depois de cada caso de teste.
• É possível ter quantos métodos @Before e @After quiser.
@Before e @After
@Beforepublic void executeAntesCadaTeste() { simpleMath = new SimpleMath();}
@Afterpublic void executeDepoisCadaTeste() {
simpleMath = null;}
Teste falha se demorar mais do que timeout
Útil para testes de redes e conexões com bancos de Dados
Aplicações modernas existem tempo de resposta máximo.
Testes de tempo garantem que o tempo de resposta máximo seja satisfeito, mesmo que o sistema se torne mais complexo
Teste de Tempo
@Test(timeout=500)public void buscaTodasAsNovelas(){
novelas.buscaTodas();}
Método Descrição Teste passa se
assertEquals(a, b) Compara dois valores a.equals(b)
assertFalse(a) Avalia uma expressão booleana
a == false
assertTrue(a) a == true
assertNotNull(a) Compara uma variável com nulo
a != null
assertNull(a) a == null
assertNotSame(a, b) Compara dois objetos
a == b
assertSame(a, b) a != b
fail()Causa uma falha no teste atual Não passa
Asserções
import org.junit.Test;
import static org.junit.Assert.*;
Imports
Método suite
//JUnit 3public static TestSuite suite() {
return new TestSuite(SuaClasseTest.class);}
//JUnit 4public static junit.framework.Test suite() {
return new JUnit4TestAdapter(SuaClasseTest.class);}
import junit.framework.Test;import junit.framework.TestSuite;
public class TesteGeral {public static Test suite() {
TestSuite suite = new TestSuite();suite.addTest(SuaClasseTeste.suite());return suite;
}}
TestSuite
Aplicação em modo texto ou gráfico para execução de testes
TestRunner
Resultado dos Testes
SUCESSO FALHA ERRO
Casos de Teste
Implementação dos Casos de Teste no
JUnit
Visão Geral
O EclEmma é um plugin para o Eclipse que mede e apresenta a cobertura de testes no próprio Eclipse. Os testes são executados no próprio
Eclipse e a apresentação dos trechos cobertos e descobertos é integrada ao editor Java.
Baseado no EMMA, outra ferramenta de cobertura de código Java, tentando adotar a filosofia de Emma para a workbench do Eclipse: Rápido ciclo de desenvolvimento/teste: Inicia a
partir do workbench, como execuções de teste JUnit podem ser analisados diretamente com essa cobertura de código.
Análise de cobertura: Na cobertura, os resultados são imediatamente resumidos e destacados nos editores de código fonte Java.
Não-invasivos: EclEmma não requer modificar seus projetos ou realizar qualquer outra configuração.
Launching Analysis Import Export
Caracteristicas
EclEmma acrescenta um modo de lançar chamada para o workbench do Eclipse. Ele é chamado de modo de Cobertura (Coverage mode) e funciona exatamente como os modos “Run” e “Debug”. A modalidade de lançamento de cobertura pode ser ativada a partir do menu Executar ou utilizando a barra no workbench:
Basta acessar suas aplicações ou testes de unidade no modo de Cobertura para coletar informações de cobertura. Atualmente, os tipos de lançamento a seguir são suportados: Aplicação Java Eclipse / RCP Aplication Equinox OSGi FrameworkJunit Test Test TestNG plug-in Junit test JUnit RAP testSWTBot Test
Após a análise de sua aplicação ou teste de unidade foi finalizado informações cobertura de código é automaticamente disponível no workbench do Eclipse:
Resumo da Cobertura: A visão Cobertura(Coverage view) listas resumos da cobertura para seus projetos de Java, que permite drill-down para o nível de método.
Analysis
Fonte highlighting:
O resultado de um teste com o Eclmma é diretamente visível nos editores fonte Java. Um código de cores totalmente personalizáveis destaca, em parte, e não linhas cobertas.
Analysis
Recursos Adicionais nos testes com o EclEmma:Selecione instruções, linhas de código ou blocos, métodos rapidamenteVárias sessões de cobertura: É possível alternar entre os dados de cobertura de várias sessões.Mesclar Sessões: Se vários trexos de código em diferentes lugares devem ser considerados para a cobertura de sessões de análise, eles podem ser facilmente fundidos.
Analysis
Enquanto EclEmma concebido essencialmente para a execução de teste e análise dentro da workbench do Eclipse, ele fornece alguns importação / exportação características.
Cobertura de importação de dados: Um assistente permite importar arquivos *. CE lança cobertura de dados externas. Exportar relatório Cobertura: dados de cobertura pode ser exportado como um arquivo *. CE ou no formato XML ou HTML.
Import/Export
Instalação
http://www.oncast.com.br/blog/?p=23 http://www.eclemma.org/index.html http://tinyurl.com/ygut9v4