SlideShare uma empresa Scribd logo
JUnit
Por que testar? Qualidade: Código testado é mais confiável Como saber se o recurso funciona sem testar? Coragem para mudar: o programador tem medo de mudar a implementação? Como saber se ainda funciona após refatoramento? Saber quando o projeto está pronto. Testes são requisitos “executáveis”. Escreva-os antes. Quando todos rodarem 100%, o projeto está concluído!
Problema com testes (e a solução) Todos sabem: devem ser escritos; Poucos o fazem, e por quê não ? Estou com muita pressa Mas isto cria um círculo vicioso Como quebrar este ciclo?  Criando um ambiente simples de testes. Depois de fazer os primeiros testes, o hábito vem para ficar. menos testes menos produtividade menos estabilidade mais pressão
JUnit Junit:  framework  para desenvolvimento e execução de testes de unidade em programas Java Define um modelo de programação para a criação de testes de unidade em classes Java Disponibiliza o  TestRunner : aplicação em modo texto ou gráfico para execução de testes Sugerido por Kent Beck para ser usado em XP
Recursos do JUnit Permite criação de testes unitários para métodos pertencentes a uma classe Permite a definição e execução de um conjunto de testes unitários –  Suites  de Teste Permite a execução de teste com relato de problemas ocorridos e onde especificamente ocorreram os erros
Usando o JUnit Passo 1: para cada classe a ser testada criar uma classe de Teste Exemplo: classe  Conta  terá como classe de teste  ContaTest A classe de Teste deve herdar da classe  TestCase  do  framework  JUnit
Exemplo - classe de teste import junit.framework.*; public class ContaTest extends TestCase { public ContaTest(String name) {  super(name);   } ... } Herdar da classe TestCase   Definir um construtor que recebe uma String   Importar classes do framework JUnit
Usando o JUnit Passo 2: criar métodos de teste cujos nomes iniciam com a palavra “test” e possuem tipo de retorno void. Exemplo para a classe ContaTest: public void testCredito() public void testDebito() public void testCreditoNegativo() public void testDebitoNegativo() Passo 3: para cada método de teste definir seu comportamento:  invocação de métodos da classe do sistema a ser testada avaliação do resultado dos métodos sendo testados usando os métodos assertEquals(), fail(), assertNull(), assertNotNull() do  framework  JUnit
Exemplo - classe de teste public class ContaTest extends TestCase { ... public void testCreditar(){ Conta contaNum111_Saldo200 = new Conta(111, 200.0); Conta contaNum111_Saldo 50  = new Conta(111,  50.0 ); contaNum111_Saldo50.creditar(150.0); this.assertEquals ( contaNum111_Saldo200,   contaNum111_Saldo50); } }   Declaração do método de teste Definição do método de teste
Alguns métodos do JUnit para teste assertEquals (objetoEsperado, objetoTeste); assertTrue (expressaoBooleana); assertNull(objeto); assertNotNull(objeto); fail (mensagem);
Exemplo - métodos do JUnit para teste public class ContaTest extends TestCase { ... public void testDebitar(){ Conta contaNum111_Saldo 50  = new Conta(111,  50.0 ); Conta contaNum111_Saldo1 = new Conta(111, 1.0); try { contaNum111_Saldo50.debitar(49.0); } catch(SaldoInsuficienteException saldo){ fail("Operacao de Debito falhou"); } this.assertEquals(contaNum111_Saldo1 ,  contaNum111_Saldo50); } }
Exemplo - métodos do JUnit para teste public class ContaTest extends TestCase { ... public void testDebitoNegativo(){ Conta contaNum111_Saldo 50  = new Conta(111,  50.0 ); try { contaNum111_Saldo50.debitar(51.0); fail("Deveria lançar SaldoInsuficienteException"); } catch(SaldoInsuficienteException saldo){ } } }   Teste de Lançamento de Exceções
Métodos de configuração de testes Caso necessário, pode-se definir configurações iniciais para serem executadas antes de cada método de teste usando o método setUp() configuração de objetos comuns aos casos de teste configuração de recursos comuns aos casos de teste  (exemplo: abertura de conexões de banco de dados, socket, etc) Para liberar recursos utilizados pelos métodos de teste pode-se usar o método tearDown() Exemplos de recursos que podem ser liberados:  streams , fechar conexões de banco de dados, apagar/mover arquivos de dados.
Exemplos - métodos do JUnit para configuração dos casos de teste public class ContaTest extends TestCase { Conta contaNum111_Saldo50; Conta contaNum111_Saldo1; ... public void setUp(){ this.contaNum111_Saldo50 = new Conta(111, 50.0); this.contaNum111_Saldo1 = new Conta(111, 1.0); } ... }  Executa antes de cada método de teste
Suites de testes Quando falamos em teste automatizado, é comum querermos executar um conjunto de testes de uma única vez; Suites de testes representam um conjunto de testes que serão executados seqüencialmente; JUnit define a classe TestSuite que: Permite incluir todos os métodos de teste de uma classe em um suite de teste; Permite definir uma classe que inclui todos os suites de teste das classes do sistema.
Exemplos – suites de testes Definindo um suite de testes com apenas uma classe de teste ... public class ContaTest extends TestCase { ... public static Test suite(){  return new TestSuite(ContaTest.class); } public static void main(String[] args){ junit.textui.TestRunner.run(suite()); } ... }  Definição do suite de teste da classe Método main() da classe invoca suite de teste
Exemplos – suites de testes Agregando um conjunto de  suites  de teste public class AllTest { ... public static void main(String[] args){ junit.textui.TestRunner.run(suite()); }  public static Test suite(){ TestSuite suite= new TestSuite("All JUnit Tests"); suite.add(ContaTest.suite()); suite.add(PoupancaTest.suite());  } ... }  OU suite.add(new TestSuite(ContaTest.class));
Como começar? Siga as orientações do Tutorial JUnit: TutorialJunitEclipse.ppt Links interessantes: Ferramentas para Testes Unitários:  http://xprogramming.com/software.htm   http://www.junit.org/index.htm http:// www.fitnesse.org

Mais conteúdo relacionado

PDF
SÁNG KIẾN XÂY DỰNG VÀ THỰC HIỆN MỘT SỐ CHỦ ĐỀ DẠY HỌC STEM CƠ BẢN VẬT LÍ TRUN...
PDF
Luận văn: Xác định các ca kiểm thử và dữ liệu kiểm thử, HAY
PPTX
Algoritmos - Aula 07 A - Vetores
DOC
Mcsa 2012 distributed file system
PDF
Introdução ao MySQL
PDF
Bài 2 Cài đặt Windows Server 2008 - Giáo trình FPT
DOC
Đề tài: Lập trình ứng dụng game Fun Math trên Android, HAY
PPT
Chuong 3 windows forms
SÁNG KIẾN XÂY DỰNG VÀ THỰC HIỆN MỘT SỐ CHỦ ĐỀ DẠY HỌC STEM CƠ BẢN VẬT LÍ TRUN...
Luận văn: Xác định các ca kiểm thử và dữ liệu kiểm thử, HAY
Algoritmos - Aula 07 A - Vetores
Mcsa 2012 distributed file system
Introdução ao MySQL
Bài 2 Cài đặt Windows Server 2008 - Giáo trình FPT
Đề tài: Lập trình ứng dụng game Fun Math trên Android, HAY
Chuong 3 windows forms

Mais procurados (20)

PDF
Đề tài: Hệ thống phát hiện cảnh báo nguy cơ tấn công mạng
PDF
Estrutura de Dados - Listas Encadeadas
PDF
giáo trình và slide môn học kiến trúc máy tính ptit
PPTX
SQL Injection
PPT
Danh Sach Lien Ket
DOC
Bài tập thực hành C#
PDF
POO - 24 - Classes Básicas do Java - Datas
PDF
Giáo Trình Java Cơ Bản ( Vietnamese)
PDF
giao-trinh-python-co-ban.pdf
PDF
PRÁTICAS DE MARKETING DE ENTRETENIMENTO: UM ESTUDO DAS BANDAS DE FORRÓ DO CEA...
PDF
NGÂN HÀNG TRẮC NGHIỆM XỬ LÝ TÍN HIỆU SỐ
PDF
Lista de exercícios resolvidos
PDF
Giáo trình hệ điều hành PTIT
DOC
Bài giảng kiến trúc máy tính
PDF
Lap trinh-huong-doi-tuong-bang-c#
DOC
Quản lý học sinh cấp 2
PDF
Interfaces e polimorfismo
PDF
Aula 04 PHP - Utilizando Funções e Manipulando Arquivos
PDF
Bài 7: Xác thực và quản lý tài khoản - Giáo trình FPT
PDF
Stg manual completo
Đề tài: Hệ thống phát hiện cảnh báo nguy cơ tấn công mạng
Estrutura de Dados - Listas Encadeadas
giáo trình và slide môn học kiến trúc máy tính ptit
SQL Injection
Danh Sach Lien Ket
Bài tập thực hành C#
POO - 24 - Classes Básicas do Java - Datas
Giáo Trình Java Cơ Bản ( Vietnamese)
giao-trinh-python-co-ban.pdf
PRÁTICAS DE MARKETING DE ENTRETENIMENTO: UM ESTUDO DAS BANDAS DE FORRÓ DO CEA...
NGÂN HÀNG TRẮC NGHIỆM XỬ LÝ TÍN HIỆU SỐ
Lista de exercícios resolvidos
Giáo trình hệ điều hành PTIT
Bài giảng kiến trúc máy tính
Lap trinh-huong-doi-tuong-bang-c#
Quản lý học sinh cấp 2
Interfaces e polimorfismo
Aula 04 PHP - Utilizando Funções e Manipulando Arquivos
Bài 7: Xác thực và quản lý tài khoản - Giáo trình FPT
Stg manual completo
Anúncio

Destaque (8)

PPTX
Apresentação Open Up
PPT
Balsamiq e Pencil - W
DOCX
Apostila - ProjectLibre 1.5
PDF
Guia do usuário - ProjectLibre 1.5
PDF
Import community pycon jp
PPSX
ProjectLibre 1.5 - Aula 5 - Relatórios
PDF
import pybr12: experiencias de inclusión en la última PyCon Brazil
PDF
IHC - Slide 2 - Usabilidade e Princípios de Design
Apresentação Open Up
Balsamiq e Pencil - W
Apostila - ProjectLibre 1.5
Guia do usuário - ProjectLibre 1.5
Import community pycon jp
ProjectLibre 1.5 - Aula 5 - Relatórios
import pybr12: experiencias de inclusión en la última PyCon Brazil
IHC - Slide 2 - Usabilidade e Princípios de Design
Anúncio

Semelhante a Junit (20)

PDF
Testes de Unidade com JUnit
PDF
Testes de Unidade com JUnit
PDF
JUnit: framework de testes unitários
PPTX
Introdução a testes unitários com jUnit
PDF
J unit xp
PPTX
Pensando em java univali turbinando seus testes
PPT
Junit 4.0
PPTX
Testes Unitários
PDF
Testes de Unidade com Junit
PDF
Palestra Testes Unidade Com JUnit
PPTX
1 2 3 - Testando - Automatizando os testes de software
PDF
Desenvolvimento Dirigido por Testes com Junit
PDF
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
PPT
Testes com JUnit
PPT
Ferramentas testes2003
PPT
Introdução a testes unitários automatizados com JUnit e NUnit
PDF
Escrevendo testes j unit no net beans ide
Testes de Unidade com JUnit
Testes de Unidade com JUnit
JUnit: framework de testes unitários
Introdução a testes unitários com jUnit
J unit xp
Pensando em java univali turbinando seus testes
Junit 4.0
Testes Unitários
Testes de Unidade com Junit
Palestra Testes Unidade Com JUnit
1 2 3 - Testando - Automatizando os testes de software
Desenvolvimento Dirigido por Testes com Junit
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
Testes com JUnit
Ferramentas testes2003
Introdução a testes unitários automatizados com JUnit e NUnit
Escrevendo testes j unit no net beans ide

Mais de elliando dias (20)

PDF
Clojurescript slides
PDF
Why you should be excited about ClojureScript
PDF
Functional Programming with Immutable Data Structures
PPT
Nomenclatura e peças de container
PDF
Geometria Projetiva
PDF
Polyglot and Poly-paradigm Programming for Better Agility
PDF
Javascript Libraries
PDF
How to Make an Eight Bit Computer and Save the World!
PDF
Ragel talk
PDF
A Practical Guide to Connecting Hardware to the Web
PDF
Introdução ao Arduino
PDF
Minicurso arduino
PDF
Incanter Data Sorcery
PDF
PDF
Fab.in.a.box - Fab Academy: Machine Design
PDF
The Digital Revolution: Machines that makes
PDF
Hadoop + Clojure
PDF
Hadoop - Simple. Scalable.
PDF
Hadoop and Hive Development at Facebook
PDF
Multi-core Parallelization in Clojure - a Case Study
Clojurescript slides
Why you should be excited about ClojureScript
Functional Programming with Immutable Data Structures
Nomenclatura e peças de container
Geometria Projetiva
Polyglot and Poly-paradigm Programming for Better Agility
Javascript Libraries
How to Make an Eight Bit Computer and Save the World!
Ragel talk
A Practical Guide to Connecting Hardware to the Web
Introdução ao Arduino
Minicurso arduino
Incanter Data Sorcery
Fab.in.a.box - Fab Academy: Machine Design
The Digital Revolution: Machines that makes
Hadoop + Clojure
Hadoop - Simple. Scalable.
Hadoop and Hive Development at Facebook
Multi-core Parallelization in Clojure - a Case Study

Último (19)

PDF
Custos e liquidação no SAP Transportation Management, TM130 Col18
PDF
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
PPTX
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
PPTX
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
PPTX
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
PDF
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
PDF
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
PDF
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
PDF
Aula04-Academia Heri- Tecnologia Geral 2025
PPTX
Aula 18 - Manipulacao De Arquivos python
PDF
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
PPTX
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
PDF
COBITxITIL-Entenda as diferença em uso governança TI
PDF
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
PDF
Apple Pippin Uma breve introdução. - David Glotz
PDF
Processos na gestão de transportes, TM100 Col18
PDF
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
PPTX
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
PPTX
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
Custos e liquidação no SAP Transportation Management, TM130 Col18
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
Aula04-Academia Heri- Tecnologia Geral 2025
Aula 18 - Manipulacao De Arquivos python
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
COBITxITIL-Entenda as diferença em uso governança TI
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
Apple Pippin Uma breve introdução. - David Glotz
Processos na gestão de transportes, TM100 Col18
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss

Junit

  • 2. Por que testar? Qualidade: Código testado é mais confiável Como saber se o recurso funciona sem testar? Coragem para mudar: o programador tem medo de mudar a implementação? Como saber se ainda funciona após refatoramento? Saber quando o projeto está pronto. Testes são requisitos “executáveis”. Escreva-os antes. Quando todos rodarem 100%, o projeto está concluído!
  • 3. Problema com testes (e a solução) Todos sabem: devem ser escritos; Poucos o fazem, e por quê não ? Estou com muita pressa Mas isto cria um círculo vicioso Como quebrar este ciclo? Criando um ambiente simples de testes. Depois de fazer os primeiros testes, o hábito vem para ficar. menos testes menos produtividade menos estabilidade mais pressão
  • 4. JUnit Junit: framework para desenvolvimento e execução de testes de unidade em programas Java Define um modelo de programação para a criação de testes de unidade em classes Java Disponibiliza o TestRunner : aplicação em modo texto ou gráfico para execução de testes Sugerido por Kent Beck para ser usado em XP
  • 5. Recursos do JUnit Permite criação de testes unitários para métodos pertencentes a uma classe Permite a definição e execução de um conjunto de testes unitários – Suites de Teste Permite a execução de teste com relato de problemas ocorridos e onde especificamente ocorreram os erros
  • 6. Usando o JUnit Passo 1: para cada classe a ser testada criar uma classe de Teste Exemplo: classe Conta terá como classe de teste ContaTest A classe de Teste deve herdar da classe TestCase do framework JUnit
  • 7. Exemplo - classe de teste import junit.framework.*; public class ContaTest extends TestCase { public ContaTest(String name) { super(name); } ... } Herdar da classe TestCase Definir um construtor que recebe uma String Importar classes do framework JUnit
  • 8. Usando o JUnit Passo 2: criar métodos de teste cujos nomes iniciam com a palavra “test” e possuem tipo de retorno void. Exemplo para a classe ContaTest: public void testCredito() public void testDebito() public void testCreditoNegativo() public void testDebitoNegativo() Passo 3: para cada método de teste definir seu comportamento: invocação de métodos da classe do sistema a ser testada avaliação do resultado dos métodos sendo testados usando os métodos assertEquals(), fail(), assertNull(), assertNotNull() do framework JUnit
  • 9. Exemplo - classe de teste public class ContaTest extends TestCase { ... public void testCreditar(){ Conta contaNum111_Saldo200 = new Conta(111, 200.0); Conta contaNum111_Saldo 50 = new Conta(111, 50.0 ); contaNum111_Saldo50.creditar(150.0); this.assertEquals ( contaNum111_Saldo200, contaNum111_Saldo50); } } Declaração do método de teste Definição do método de teste
  • 10. Alguns métodos do JUnit para teste assertEquals (objetoEsperado, objetoTeste); assertTrue (expressaoBooleana); assertNull(objeto); assertNotNull(objeto); fail (mensagem);
  • 11. Exemplo - métodos do JUnit para teste public class ContaTest extends TestCase { ... public void testDebitar(){ Conta contaNum111_Saldo 50 = new Conta(111, 50.0 ); Conta contaNum111_Saldo1 = new Conta(111, 1.0); try { contaNum111_Saldo50.debitar(49.0); } catch(SaldoInsuficienteException saldo){ fail("Operacao de Debito falhou"); } this.assertEquals(contaNum111_Saldo1 , contaNum111_Saldo50); } }
  • 12. Exemplo - métodos do JUnit para teste public class ContaTest extends TestCase { ... public void testDebitoNegativo(){ Conta contaNum111_Saldo 50 = new Conta(111, 50.0 ); try { contaNum111_Saldo50.debitar(51.0); fail("Deveria lançar SaldoInsuficienteException"); } catch(SaldoInsuficienteException saldo){ } } } Teste de Lançamento de Exceções
  • 13. Métodos de configuração de testes Caso necessário, pode-se definir configurações iniciais para serem executadas antes de cada método de teste usando o método setUp() configuração de objetos comuns aos casos de teste configuração de recursos comuns aos casos de teste (exemplo: abertura de conexões de banco de dados, socket, etc) Para liberar recursos utilizados pelos métodos de teste pode-se usar o método tearDown() Exemplos de recursos que podem ser liberados: streams , fechar conexões de banco de dados, apagar/mover arquivos de dados.
  • 14. Exemplos - métodos do JUnit para configuração dos casos de teste public class ContaTest extends TestCase { Conta contaNum111_Saldo50; Conta contaNum111_Saldo1; ... public void setUp(){ this.contaNum111_Saldo50 = new Conta(111, 50.0); this.contaNum111_Saldo1 = new Conta(111, 1.0); } ... } Executa antes de cada método de teste
  • 15. Suites de testes Quando falamos em teste automatizado, é comum querermos executar um conjunto de testes de uma única vez; Suites de testes representam um conjunto de testes que serão executados seqüencialmente; JUnit define a classe TestSuite que: Permite incluir todos os métodos de teste de uma classe em um suite de teste; Permite definir uma classe que inclui todos os suites de teste das classes do sistema.
  • 16. Exemplos – suites de testes Definindo um suite de testes com apenas uma classe de teste ... public class ContaTest extends TestCase { ... public static Test suite(){ return new TestSuite(ContaTest.class); } public static void main(String[] args){ junit.textui.TestRunner.run(suite()); } ... } Definição do suite de teste da classe Método main() da classe invoca suite de teste
  • 17. Exemplos – suites de testes Agregando um conjunto de suites de teste public class AllTest { ... public static void main(String[] args){ junit.textui.TestRunner.run(suite()); } public static Test suite(){ TestSuite suite= new TestSuite("All JUnit Tests"); suite.add(ContaTest.suite()); suite.add(PoupancaTest.suite()); } ... } OU suite.add(new TestSuite(ContaTest.class));
  • 18. Como começar? Siga as orientações do Tutorial JUnit: TutorialJunitEclipse.ppt Links interessantes: Ferramentas para Testes Unitários: http://xprogramming.com/software.htm http://www.junit.org/index.htm http:// www.fitnesse.org