Junit 4.0 - PowerPoint PPT Presentation

About This Presentation
Title:

Junit 4.0

Description:

Junit 4.0 Daniel Cukier IME USP danicuki_at_mandic.com.br MAC5700 – PowerPoint PPT presentation

Number of Views:122
Avg rating:3.0/5.0
Slides: 22
Provided by: usp84
Category:
Tags: framework | html | http | junit

less

Transcript and Presenter's Notes

Title: Junit 4.0


1
Junit 4.0
  • Daniel Cukier IME USP
  • danicuki_at_mandic.com.br
  • MAC5700

2
Conteúdo
  • Sobre o JUnit
  • Migrando do Junit 3 para 4
  • Novidades da nova versão
  • Testes de Tempo e performance
  • J2MEUnit
  • Outros arcabouços

3
Sobre o JUnit
  • Arcabouço para testes de unidades pequenos
    testes para as várias partes (módulos, métodos,
    classes, etc) de um sistema
  • Usado fortemente em XP, TDD e outros métodos
    ágeis
  • Código fonte livre
  • Testes de unidades mostram a presença de erros,
    não a auência deles

4
Velho JUnit
import junit.framework.TestCase public class
NovelaTest extends TestCase public void
testNovelaExiste() ArquivoDeNovelas
novelas new ArquivoDeNovelas() assertEqual
s("Arquivo deve possuir Sassaricando", true,
novelas .possuiNovela("Sassaricando"))
reflexão
métodos da classe TestCase
5
Velho JUnit
import junit.framework.TestCase public class
NovelaTest extends TestCase public void
setUp() novelas new ArquivoDeNovelas()
public void tearDown() novelas
null
6
Migrando para Junit 4.0
import junit.framework.JUnit4TestAdapter import
org.junit.Test import static org.junit.Assert.ass
ertEquals public class NovelaNovoTest _at_Test
public void novelaJaTerminou() ArquivoDeNovel
as novelas new ArquivoDeNovelas() assertEqual
s("Arquivo deve possuir Sassaricando", true,
novelas .possuiNovela("Sassaricando"))
public static junit.framework.Test
suite() return new JUnit4TestAdapter(NovelaNovo
Test.class)
não é subclasse de TestCase classe normal
não começa com test
7
Migrando para Junit 4.0
import junit.framework.JUnit4TestAdapter import
org.junit.Test import static org.junit.Assert.ass
ertEquals public class NovelaNovoTest _at_Test
public void novelaJaTerminou() ArquivoDeNovel
as novelas new ArquivoDeNovelas() assertEqual
s("Arquivo deve possuir Sassaricando", true,
novelas .possuiNovela("Sassaricando"))
public static junit.framework.Test
suite() return new JUnit4TestAdapter(NovelaNovo
Test.class)
Importa JUnit4TestAdapter
Importa Test Annotation
Importa método de classe
Todos os testes são anotado com _at_Test
Usado para rodar usando JUnit runner antigo
8
Executando os testes
  • A maioria dos ambientes de desenvolvimento ainda
    não suportam Junit 4
  • JUnit4Adapter permite rodar testes do JUnit 4
    nesses ambientes, usando o método suite()
  • Rodar via linha de comando
  • java org.junit.runner.JUnitCore LibraryTest

9
Antes e Depois de Cada Teste
import org.junit.After import org.junit.Before i
mport org.junit.Test import static
org.junit.Assert.assertEquals public class
NovelaNovoTest private ArquivoDeNovelas
novelas _at_Before public void
rodaAntesDeCadaTeste() novelas new
ArquivoDeNovelas() _at_After public void
rodaDepoisDeCadaTeste() novelas
null _at_Test public void testNovelaExiste()
assertEquals("Arquivo deve possuir
Sassaricando", true, novelas .possuiNovela("Sa
ssaricando"))
10
Antes e Depois de Cada Teste
  • É possível ter quantos métodos _at_Before e _at_After
    quiser
  • Métodos _at_Before e _at_After são herdados das
    superclasses. Métodos _at_Before das superclasses
    são executados antes dos métodos _at_Before da
    subclasse. Métodos _at_After das superclasses são
    executados depois.
  • Objetivo agrupar código comum a vários testes

11
Antes e Depois da Classe de Testes
_at_BeforeClass public void rodaAntesDeTodosOsTeste
s() novelas new ArquivoDeNovelas() novela
s.carregaDadosDaRede() _at_AfterClass public
void rodaDepoisDeTodosOsTestes() novelas
null
Processamento pesado!
  • Somente um método por classe
  • Bom para inicializações demoradas

12
Exceções Esperadas
_at_Test public void testDivisaoPorZero() try
int n 2 / 0 fail("Dividiu por
zero!") catch (ArithmeticException
success) assertNotNull(success.getMessag
e())
ANTES
_at_Test(expectedArithmeticException.class)
public void testDivisaoPorZero () int n 2
/ 0
JUnit 4
  • Se exceção não for gerada, teste falha

13
Teste de tempo
_at_Test(timeout500) public void buscaTodasAsNovelas
() novelas.buscaTodas()
  • Teste falha se demorar mais do que timeout
  • Útil para testes de redes e conexões com bancos
    de dados
  • Detalhe _at_After não é executado caso falhe!

14
Teste de Tempo
  • Aplicações modernas existem tempo de resposta
    máximo.
  • O tempo de resposta pode mudar na medida em que o
    sistema evolui
  • Testes de tempo garantem que o tempo de resposta
    máximo seja satisfeito, mesmo que o sistema se
    torne mais complexo
  • O sistema cresce em funcionalidades sem perder
    performance!

15
Outras Funcionalidades
  • _at_Ignore Para desabilitar temporariamente um
    teste
  • assertEquals(Object expected, Object actual)
    compara elemento a elemento

16
Resumo
  • Precisa do JDK 5 para rodar
  • Classes de teste não são subclasses de TestCase
  • Métodos não começam com test
  • Métodos de asserção de classe
  • _at_Test para anotar um teste
  • _at_Before e _at_After para rodar antes e depois de
    cada teste.
  • _at_Test recebe parâmetro de timeout

17
Resumo
  • _at_Test recebe parâmentro de excessão esperada
  • JUnit4Adapter permite rodar JUnit 4 nos runners
    antigos.
  • Testes do JUnit antigo rodam normalmente no JUnit
    4

18
J2MEUnit
  • J2ME não possui reflexão, muito menos anotações!
  • Recursos limitados

public Test suite() TestSuite suite new
TestSuite("testes paciente DAO")
suite.addTest(new InfoPacienteDAOTest("Teste
adiciona Paciente", new TestMethod()
public void run(TestCase tc) throws Exception
((InfoPacienteDAOTest) tc).testAddInfoPacien
te() ))
Adicionando métodos
19
J2MEUnit
imports public class BorboletaTestRunner
extends TestRunner public BorboletaTestRunner(
) super() protected void startApp()
start(new String InfoPacienteDAOTest.class
.getName(), FormPacienteTest.class.getName(),
ExportPacienteTest.class.getName(), Import
PacienteTest.class.getName() )
Array de strings com nome de classes de teste
20
Outros Arcabouços Unit
  • SQLUnit testes para Stored Procedures
    (http//sqlunit.sourceforge.net/)
  • JPDFUnit testa documentos PDF gerados
    dinamicamente (http//jpdfunit.sourceforge.net/)
  • XMLUnit teste para arquivos XML
    (http//xmlunit.sourceforge.net/)
  • Watij teste de aplicações Web em java
    (http//watij.xwiki.com/xwiki/bin/view/Main/WebHom
    e)

21
Referências
  • http//www-128.ibm.com/developerworks/java/library
    /j-junit4.html
  • http//www.instrumentalservices.com/media/articles
    /java/junit4/JUnit4.pdf
  • http//junit.sourceforge.net/doc/cookbook/cookbook
    .htm
  • http//j2meunit.sourceforge.net/doc.html
  • http//www.junit.org/
  • http//en.wikipedia.org/wiki/Unit_test
Write a Comment
User Comments (0)
About PowerShow.com