SlideShare uma empresa Scribd logo
5
Mais lidos
7
Mais lidos
10
Mais lidos
Testes unitários com jUnit
       Prof. Leonardo Soares
Recapitulando


Já sabemos qual a importância de aplicar testes
unitários em nosso software
Também sabemos como identificar os testes
necessários
Até o momento realizamos nossos testes de uma
maneira manual
Qual o problema com os testes
          manuais?


Muito código para ser escrito
Mais código ainda para se verificar o retorno dos
métodos de forma automática
Temos de testar um método por vez
Precisamos automatizar isto!
Automação de testes


Testes automatizados envolvem o uso de um
software para controlar a execução dos testes
Há basicamente dois tipos de automatizadores:
  Para avaliar códigos
  Para testes através de interface gráfica
Automação de testes unitários


Utilizaremos um framework para executar nossos testes
Este framework fará a execução de múltiplos testes
Seu objetivo é realizar comparações entre os valores
retornados e os esperados de forma automática
Além de oferecer recursos para comparar mais facilmente os
resultados dos métodos aos esperados
Framework jUnit


Escrito originalmente por Kent Beck e Erich Gamma
Utilizado em Java, mas há versões Unit para
diferentes linguagens de programação
É uma ferramenta de testes de regressao
Integra-se a diferentes IDEs
Como utilizá-lo em nosso projeto


  Podemos baixar a biblioteca do junit e adicionar
  manualmente
    http://www.junit.org
  Ou adicionar ao nosso projeto no NetBeans ou Eclipse
Testes manuais x automatizados


 Calcular imposto com base no salário – calcular( Float
 salario )
   Imposto 27,5% a partir de 3.743
   Imposto 22,5% a partir de 2.995 até 3.743
   O método deve retornar o valor do imposto a ser pago
Teste manual

public static void calcular( Double salario ){
            if( salario > 3743 ){
                         return salario*0.275;
            }else if( salario > 2995 && salario < 3743){
                         return salario*0.225;
            }

            return -1;
}

public static void main( String args[] ){

            double resultado = calcular( 3800.0);
            if( resultado == 1045){
                        System.out.println("Passou no teste");
            }else{
                        System.out.println("Teste falhou");
            }
}
Teste automatizado


import org.junit.Assert;
import org.junit.Test;

public class FiscalRendaTest {

        @Test
        public void testCalculo(){
                 double resultado = FiscalRenda.calcular(3800.0);
                 Assert.assertEquals(1045, resultado, 0.1);
        }
}
Conceitos importantes relacionados
             a teste


  Erro
    Quando o método produziu um resultado inesperado
  Falha
    Quando há algum problema relacionado ao código
  Sucesso
    Quando o método produziu o resultado esperado
Annotations jUnit


É um metadado representado pela @
O jUnit utiliza estas annotations para guiar o uso dos
testes
Evita a necessidade de herdar de algumas
classes, convenções de nomes, criação de métodos
especiais, dentre outros
Annotations do jUnit

@Test – usada para indicar que o método é usado para criar testes
@Before – código a ser executado, toda vez, antes da execução de
cada métodos de teste
 Usado para preparar o ambiente. Inicializar classes, ler dados, dentre outros
@After – código a ser executado, toda vez, após a execução de cada
métodos de teste
@BeforeClass – similar ao @Before porém executado apenas uma vez
antes de todos os testes
Usado para preparar atividades que demandem tempo. Inicializar o banco de
@AfterClass – similar ao @Aftermétodo precisam serapenas uma vez
          dados, por exemplo. Os porém executado estáticos
após todos os testes
@Test( expected = Exception.class ) – verifica se a exceção foi lançada
@Test(timeout = 100) – falha se o método durar mais que 100
milisegundos
Uso do jUnit


1. Criaremos uma classe para nossos testes referentes
   a determinada classe
2. Daremos imports nas classes e métodos necessários
3. Criaremos métodos para testar nossos métodos
4. Faremos a comparação entre o retorno de nosso
   método com o resultado esperado
Criem os testes unitários abaixo


Método para realizar soma
  Recebe como entrada dois números
  Retorna o resultado da soma
Método para ralizar divisão
  Lançar exceção quando receber 0 no denominador
Testar um método para realizar depósito em uma conta
bancária
  O método deve receber um flutuante com o valor a ser
  depósitado
  O método deve retornar o valor contido na conta
Criem os testes unitários abaixo

Testar o método para fazer o saque em uma conta
  O método aceita dois valores: valor_saque, valor_saldo
  O método deve retornar um valor referente ao saldo da conta após
  o saque ou -1 em situação de erro
Testar o método para liberar a prova do detran ou não
  O método aceita um valor do tipo Integer com a idade do aluno
  A liberação da prova será mediante ao atendimento dos critérios
  ou não
  O método deve retornar um boolean true caso a prova seja
  liberada ou false em caso contrário

Mais conteúdo relacionado

PPTX
Testes Unitários
PPTX
Apresentacao Testes de Unidade
PPT
Tecnicas Para Planejamento E Execucao De Testes De Software
PDF
Introdução ao Teste de Software - Uma abordagem prática
DOC
Programacao para Web I Plano de Ensinodoc
PDF
Revisão Sobre Programação Orientada a Objetos com Java
PPTX
Aula 6 - Ataques de Negação de Serviço (DoS e D-DoS)
PDF
Testing with Spring: An Introduction
Testes Unitários
Apresentacao Testes de Unidade
Tecnicas Para Planejamento E Execucao De Testes De Software
Introdução ao Teste de Software - Uma abordagem prática
Programacao para Web I Plano de Ensinodoc
Revisão Sobre Programação Orientada a Objetos com Java
Aula 6 - Ataques de Negação de Serviço (DoS e D-DoS)
Testing with Spring: An Introduction

Mais procurados (20)

PDF
Definición de clases en POO
PDF
Cross site scripting attacks and defenses
PDF
Programação Orientação a Objetos - Herança
PDF
Aula 02 - Principios da Orientação a Objetos (POO)
PDF
Javascript aula 01 - visão geral
PDF
Kali ile Linux'e Giriş | IntelRAD
PDF
Privilege escalation from 1 to 0 Workshop
PDF
Siber Güvenlik ve Etik Hacking Sunu - 10
PDF
Metasploit El Kitabı
PPTX
Unit Testing And Mocking
PDF
Exemplo de Plano de testes
PPT
Introduction to Web Application Penetration Testing
PDF
Some Tatbikatları ve SIEM Testleri İçin Siber Saldırıları Nasıl Optimize Ederiz?
PPT
C# Method overloading
PDF
Unit testing with JUnit
PPT
JUnit 4
PPTX
Uygulamali Sizma Testi (Pentest) Egitimi Sunumu - 1
PPTX
Introdução a poo
PDF
Modelo plano de_testes
Definición de clases en POO
Cross site scripting attacks and defenses
Programação Orientação a Objetos - Herança
Aula 02 - Principios da Orientação a Objetos (POO)
Javascript aula 01 - visão geral
Kali ile Linux'e Giriş | IntelRAD
Privilege escalation from 1 to 0 Workshop
Siber Güvenlik ve Etik Hacking Sunu - 10
Metasploit El Kitabı
Unit Testing And Mocking
Exemplo de Plano de testes
Introduction to Web Application Penetration Testing
Some Tatbikatları ve SIEM Testleri İçin Siber Saldırıları Nasıl Optimize Ederiz?
C# Method overloading
Unit testing with JUnit
JUnit 4
Uygulamali Sizma Testi (Pentest) Egitimi Sunumu - 1
Introdução a poo
Modelo plano de_testes
Anúncio

Semelhante a Introdução a testes unitários com jUnit (20)

PDF
Testes de Unidade com JUnit
PPT
PDF
Testes de Unidade com JUnit
PDF
Testes de Unidade com Junit
PDF
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
PPTX
1 2 3 - Testando - Automatizando os testes de software
PDF
Desenvolvimento Dirigido por Testes com Junit
PDF
J unit xp
PDF
JUnit: framework de testes unitários
PPT
Introdução a testes unitários automatizados com JUnit e NUnit
PPTX
J unit
PPTX
Introdução a testes unitários
PDF
TDD com Python (Completo)
PPTX
Pensando em java univali turbinando seus testes
PDF
Palestra Testes Unidade Com JUnit
PDF
Testes de unidade em Java: JUnit
PDF
DOJO - TDD com C++
Testes de Unidade com JUnit
Testes de Unidade com JUnit
Testes de Unidade com Junit
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
1 2 3 - Testando - Automatizando os testes de software
Desenvolvimento Dirigido por Testes com Junit
J unit xp
JUnit: framework de testes unitários
Introdução a testes unitários automatizados com JUnit e NUnit
J unit
Introdução a testes unitários
TDD com Python (Completo)
Pensando em java univali turbinando seus testes
Palestra Testes Unidade Com JUnit
Testes de unidade em Java: JUnit
DOJO - TDD com C++
Anúncio

Mais de Leonardo Soares (20)

PPTX
Introdução a linguagem de programação Lua
PPTX
Depuração de software
PPTX
Introdução ao HTML4 e HTML5
PPTX
Grupo de processos de planejamento - Parte 02
PPTX
Introdução ao desenvolvimento de aplicativos com PhoneGap e Sencha Touch
PPTX
Técnicas de modelagem de testes
PPTX
Grupo de processos de planejamento - Parte 01
PPTX
Grupos de processos de planejamento
PPTX
Gestão de projetos com PMBoK
PPTX
Grupos de processos de iniciação - PMBoK
PPTX
Introdução a testes de software
PPTX
Introdução a gestão de projetos com PMBoK
PPTX
Orientação a objetos com PHP
PPTX
Banco de dadados MySQL com PHP
PPTX
Tratamento de exceções com PHP
PPTX
Introdução ao CSS
PPTX
Criação de tabelas com HTML
PPTX
Criação de formulários e tabelas com HTML
PPTX
Uso de imagens e links com HTML
PPTX
Introdução a programação para a Internet
Introdução a linguagem de programação Lua
Depuração de software
Introdução ao HTML4 e HTML5
Grupo de processos de planejamento - Parte 02
Introdução ao desenvolvimento de aplicativos com PhoneGap e Sencha Touch
Técnicas de modelagem de testes
Grupo de processos de planejamento - Parte 01
Grupos de processos de planejamento
Gestão de projetos com PMBoK
Grupos de processos de iniciação - PMBoK
Introdução a testes de software
Introdução a gestão de projetos com PMBoK
Orientação a objetos com PHP
Banco de dadados MySQL com PHP
Tratamento de exceções com PHP
Introdução ao CSS
Criação de tabelas com HTML
Criação de formulários e tabelas com HTML
Uso de imagens e links com HTML
Introdução a programação para a Internet

Último (20)

PPTX
GUERRAFRIA.pptdddddddddddddddddddddddddx
PPTX
biossegurança e segurança no trabalho (6).pptx
PPTX
Biologia celular: citologia, é o estudo da célula, a unidade básica da vida.
PDF
Metabolismo_energético_3ano_pre_vest_2026.pdf
PPTX
NR11 - Treinamento Direcao Defensiva - 2023.pptx
PPTX
Aula 13 - Tópico Frasal - Argumentação.pptx
PDF
saeb_documentos_de_referencia_versao_1.0.pdf
PDF
A relação entre funções executivas e desempenho acadêmico em crianças com Tra...
PPTX
16. MODERNISMO - PRIMEIRA GERAÇÃO - EDIÇÃO 2021 (1).pptx
PPTX
ACIDOS NUCLEICOS - REPLICAÇÃO DO DNA - E.M.
PPTX
Ciências da Natureza e suas áreas de desenvolvimento
PPTX
Slide_Macronutrientes e Antinutrientes da Dieta Humana.pptx
PPTX
Reino Monera e Protista: representantes e caracteristicas.pptx
PPTX
ELEMENTOS E FUNÇÕES DE LINGUAGEM (EMOTIVA, REFERENCIAL, CONATIVA, POÉTICA, FÁ...
PDF
Organizador Curricular da Educação em Tempo Integral.pdf
PPTX
A História da Europa na Baixa Idade Média.pptx
PDF
ESPELHOS DA ALMA A PSICOLOGIA POR TRÁS DOS CONTOS DE FADAS.pdf
PDF
Uma Introdução às Ciências do Alcorão (Islam)
PDF
A provisão de jojuador (ramadã) islamismo
PPTX
Lição 8 EBD.pptxtudopossonaquelequemimfortalece
GUERRAFRIA.pptdddddddddddddddddddddddddx
biossegurança e segurança no trabalho (6).pptx
Biologia celular: citologia, é o estudo da célula, a unidade básica da vida.
Metabolismo_energético_3ano_pre_vest_2026.pdf
NR11 - Treinamento Direcao Defensiva - 2023.pptx
Aula 13 - Tópico Frasal - Argumentação.pptx
saeb_documentos_de_referencia_versao_1.0.pdf
A relação entre funções executivas e desempenho acadêmico em crianças com Tra...
16. MODERNISMO - PRIMEIRA GERAÇÃO - EDIÇÃO 2021 (1).pptx
ACIDOS NUCLEICOS - REPLICAÇÃO DO DNA - E.M.
Ciências da Natureza e suas áreas de desenvolvimento
Slide_Macronutrientes e Antinutrientes da Dieta Humana.pptx
Reino Monera e Protista: representantes e caracteristicas.pptx
ELEMENTOS E FUNÇÕES DE LINGUAGEM (EMOTIVA, REFERENCIAL, CONATIVA, POÉTICA, FÁ...
Organizador Curricular da Educação em Tempo Integral.pdf
A História da Europa na Baixa Idade Média.pptx
ESPELHOS DA ALMA A PSICOLOGIA POR TRÁS DOS CONTOS DE FADAS.pdf
Uma Introdução às Ciências do Alcorão (Islam)
A provisão de jojuador (ramadã) islamismo
Lição 8 EBD.pptxtudopossonaquelequemimfortalece

Introdução a testes unitários com jUnit

  • 1. Testes unitários com jUnit Prof. Leonardo Soares
  • 2. Recapitulando Já sabemos qual a importância de aplicar testes unitários em nosso software Também sabemos como identificar os testes necessários Até o momento realizamos nossos testes de uma maneira manual
  • 3. Qual o problema com os testes manuais? Muito código para ser escrito Mais código ainda para se verificar o retorno dos métodos de forma automática Temos de testar um método por vez Precisamos automatizar isto!
  • 4. Automação de testes Testes automatizados envolvem o uso de um software para controlar a execução dos testes Há basicamente dois tipos de automatizadores: Para avaliar códigos Para testes através de interface gráfica
  • 5. Automação de testes unitários Utilizaremos um framework para executar nossos testes Este framework fará a execução de múltiplos testes Seu objetivo é realizar comparações entre os valores retornados e os esperados de forma automática Além de oferecer recursos para comparar mais facilmente os resultados dos métodos aos esperados
  • 6. Framework jUnit Escrito originalmente por Kent Beck e Erich Gamma Utilizado em Java, mas há versões Unit para diferentes linguagens de programação É uma ferramenta de testes de regressao Integra-se a diferentes IDEs
  • 7. Como utilizá-lo em nosso projeto Podemos baixar a biblioteca do junit e adicionar manualmente http://www.junit.org Ou adicionar ao nosso projeto no NetBeans ou Eclipse
  • 8. Testes manuais x automatizados Calcular imposto com base no salário – calcular( Float salario ) Imposto 27,5% a partir de 3.743 Imposto 22,5% a partir de 2.995 até 3.743 O método deve retornar o valor do imposto a ser pago
  • 9. Teste manual public static void calcular( Double salario ){ if( salario > 3743 ){ return salario*0.275; }else if( salario > 2995 && salario < 3743){ return salario*0.225; } return -1; } public static void main( String args[] ){ double resultado = calcular( 3800.0); if( resultado == 1045){ System.out.println("Passou no teste"); }else{ System.out.println("Teste falhou"); } }
  • 10. Teste automatizado import org.junit.Assert; import org.junit.Test; public class FiscalRendaTest { @Test public void testCalculo(){ double resultado = FiscalRenda.calcular(3800.0); Assert.assertEquals(1045, resultado, 0.1); } }
  • 11. Conceitos importantes relacionados a teste Erro Quando o método produziu um resultado inesperado Falha Quando há algum problema relacionado ao código Sucesso Quando o método produziu o resultado esperado
  • 12. Annotations jUnit É um metadado representado pela @ O jUnit utiliza estas annotations para guiar o uso dos testes Evita a necessidade de herdar de algumas classes, convenções de nomes, criação de métodos especiais, dentre outros
  • 13. Annotations do jUnit @Test – usada para indicar que o método é usado para criar testes @Before – código a ser executado, toda vez, antes da execução de cada métodos de teste Usado para preparar o ambiente. Inicializar classes, ler dados, dentre outros @After – código a ser executado, toda vez, após a execução de cada métodos de teste @BeforeClass – similar ao @Before porém executado apenas uma vez antes de todos os testes Usado para preparar atividades que demandem tempo. Inicializar o banco de @AfterClass – similar ao @Aftermétodo precisam serapenas uma vez dados, por exemplo. Os porém executado estáticos após todos os testes @Test( expected = Exception.class ) – verifica se a exceção foi lançada @Test(timeout = 100) – falha se o método durar mais que 100 milisegundos
  • 14. Uso do jUnit 1. Criaremos uma classe para nossos testes referentes a determinada classe 2. Daremos imports nas classes e métodos necessários 3. Criaremos métodos para testar nossos métodos 4. Faremos a comparação entre o retorno de nosso método com o resultado esperado
  • 15. Criem os testes unitários abaixo Método para realizar soma Recebe como entrada dois números Retorna o resultado da soma Método para ralizar divisão Lançar exceção quando receber 0 no denominador Testar um método para realizar depósito em uma conta bancária O método deve receber um flutuante com o valor a ser depósitado O método deve retornar o valor contido na conta
  • 16. Criem os testes unitários abaixo Testar o método para fazer o saque em uma conta O método aceita dois valores: valor_saque, valor_saldo O método deve retornar um valor referente ao saldo da conta após o saque ou -1 em situação de erro Testar o método para liberar a prova do detran ou não O método aceita um valor do tipo Integer com a idade do aluno A liberação da prova será mediante ao atendimento dos critérios ou não O método deve retornar um boolean true caso a prova seja liberada ou false em caso contrário

Notas do Editor

  • #7: O teste de regressão é aplicável a uma nova versão de software ou à necessidade de se executar um novo ciclo de teste.
Consiste em se aplicar, a cada nova versão do software ou a cada ciclo, todos os testes que já foram aplicados nas versões ou ciclos de teste anteriores do sistema. Visa identificar se algum erro já identificado anteriormente retorna à nova versão, medindo assim a qualidade do software produzido.
  • #8: Criar um novo projeto e adicionar abibliotecatanto no netbeanscomo no eclipse
  • #10: Modifiquemparatestar com valor nasegundaopção, naterceiraopção e depoismantenhamtodosos testes
  • #16: Testes primeiroponto: quaisquernúmeros, verifiquem se o métodoretorna o valor correto. Incluamvalorescorretos e vejam se osretornossãooscorretosTestes segundoponto: númeropositivomaiorque zero, zero, negativo
  • #17: Testes para a primeiracondição? 20, 100 [sucesso] / 20, 10 [ falha ] (primeiro valor maiorque o segundo) / 0, 0 [falha] (O métododeveaceitar o saquecaso o saldosejamaiorouigual)Testes para a segundacondição? 18 oumaiorque 18 / menorque 18 / número 0 ounegativo