SlideShare a Scribd company logo
1 of 22
Testes Unitários usando TestNG By Bárbara Cabral
Introdução Testes de Software Ajudam a medir a qualidade do software baseando-se nos defeitos(bugs) encontrados. Reduzem o nível de risco* de um sistema como um todo Risco: um fator que pode resultar em futuras consequências negativas; usualmente expressado como impacto e probabilidade Contribuem para o cumprimento de itens contratuais ou requisitos legais acordados com o cliente Como?  Encontrando e corrigindo defeitos ANTES do sistema ser implantado em ambiente operacional.
Introdução
Testes Unitários O teste unitário se concentra na verificação da menor unidade do projeto de software.  Em sistemas construídos com uso de linguagens orientadas a objetos, como Java , essa unidade pode ser identificada como um método, uma classe ou mesmo um objeto.  A partir de cada uma dessas unidades pode ser definido um conjunto de dados de entrada e saída.  Entrada: parâmetros  Saída: valor de retorno, exceções ou o estado do objeto.  Ferramentas de Teste Unitário simulam dados de entrada e verificam se os dados de saída/retorno refletem realmente o comportamento esperado
TestNG Ferramenta Open-Source criada para superar as limitações da ferramenta JUnit e prover features adicionais necessárias para testar a última geração de aplicações Java.   (by Cedric Beust)
TestNG Executa métodos individualmente (não precisa executar toda a classe como no JUnit) É possível habilitar/desabilitar métodos  Configuração flexível, com o uso de XML Contém conversor de métodos de JUnit para TestNG (JUnitConverter)  Obs: ocorrem alguns erros quando converte métodos de teste com exceção. Até 2008 o Testng não convertia os testes de exceção e Junit para TestNG. Plugin para Eclipse Reports JUnitmode Default HTML reports JUnitReport HTML plug-in
Estruturação dos Testes Unitários TestNG cobre diversas estratégias de testes unitários:  Agrupamento por cenário, para quem usa casos de uso. Agrupamento por feature, para quem usa FDD, p.ex. Agrupamento por requisitos, no caso de uma metodologia tradicional como o RUP. Agrupamento por caso de teste ou por roteiro de testes. Além disso, ele permite todas ao mesmo tempo se for utilizado o conceito de grupos.
Annotations @Test Identifica um método de teste Groups: grupososquais o métodopertence Parameters: parâmetrosqueserãopassadosparasosmétodos de teste, comodeclarado no testng.xml DependsOnGroups: lista de gruposque o métododepende Timeout: duração máxima de execução do teste antes que ele seja considerado uma falha @Configuration Identifica um métodoparaconfigurar testes Métodos de configuraçãopodem ser agrupados e terdependências beforeTestMethod/afterTestMethod  (JUnit: setup/tearDown) beforeTestClass/afterTestClass  (JUnit: No equivalent) beforeSuite/afterSuite  (JUnit: No equivalent) beforeTest/afterTest (Junit: No equivalent) @ExpectedExceptions Indicaque o métodotestadolançaumaoumaisexceções. É possívelchecar as exceçõeslançadas @DataProvider Provêparâmetrosparamétodos de teste @Factory Criaseusprópriosobjtos de test em tempo de execução
Configuração com ‘testng.xml’ Arquivo onde são definidas as configurações de execução dos testes: Métodos de testes, classes e pacotes Quais grupos devem ser executados (include-groups) Quais grupos devem ser excluídos (exclude-groups) Define grupos adicionais (grupos de grupos) Se os testes deve, ser executados em paralelo Parâmetros Modo JUnit
Testng.xml <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >    <suitename="Suite1" verbose="1" >        <testname="Regression1">         <classes>             <classname="test.sample.ParameterSample"/>             <classname="test.sample.ParameterTest"/>         </classes>     </test>     <testname="Nopackage" >         <classes>            <classname="NoPackageTest" />         </classes>     </test>   </suite> <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >   <suitename="Suite1" verbose="1" >         <testname="Regression1"   >                <packages>                    <package name="test.sample" />                </packages>         </test> </suite> Executa todas as classes da package Classes de teste em pacotes diferentes. Quando o arquivo testng.xml está no mesmo pacote, só precisa colocar o nome de classe
testng.xml <test name=“Testt1">   <groups>     <run>       <exclude name="brokenTests"  />       <include name="checkinTests"  />     </run>   </groups>      <classes>     <class name="test.IndividualMethodsTest">       <methods>         <include name="testMethod" />       </methods>     </class>   </classes> </test> publicclass Test1 {   @Test(groups = { "functest", "checkintest" })   publicvoid testMethod1() {   }     @Test(groups = {"checkintest"} )   publicvoid testMethod2() {   }     @Test(groups = { "functest" })   publicvoid testMethod3() {   } } Vantagem: - Possibilidade de separar grupos de teste como: testes baseados em dados,  testes de segurança, testes funcionais, etc... - Possibilidade de criar um grupo para cada funcionalidade.Exemplo:  “channel-grid”, “channel-medicao”, “channel-iea”
DTD testng.xml Link DTD Spec.
Execução de Testes Maior parte do trabalho é corrigiros testes quefalham A maioria dos frameworks exigemque se executemtodos TestNGcria um arquivo testng-failed.xml Vantagem: é possível re-executarapenasos testes quefalharam
Report da Execução TestNGpossuiosewguintesrelatórios: JUnitmode Relatórios Default em HTML PluginJUnitReport HTML TestNG’sowntesting
Testes dirigidos a dados (Data-DrivenTesting) Utilizando os DataProviders (@DataProvider) Define métodos que podem ser provedores de dados a outros métodos Permite separar os dados da lógica  Dados podemvir de objetos java, arquivostexto, banco de dados, etc… Podem ser definidosconjuntos de dados para testes positivos e para testes negativos
Testes dirigidos a dados (Exemplo) 	@Test(dataProvider = “good-strings”) publicvoidparseGoodString(String s) { newParser().parse(s); 	} @DataProvider(name = “good-strings") publicObject[][] createGoodStrings() { returnnewObject[][] { newObject[] { “2 * 2” }, newObject[] { “3 + 2” }; 		} 	}
Integração com outros Frameworks Maven (v1 e v2) Spring Framework Selenium Cucumber DBUnit GlassfishUnifiedTest Framework (TestNGBased) http://wiki.java.net/bin/view/Projects/GlassFishQuality DBUnit Emma TestCoverage Outros...
TestNG vs. JUnit Fonte: http://lijinjoseji.wordpress.com/2008/02/29/testng-56-and-junit-44-which-framework-you-will-choose-for-unit-testing/
TestNG vs. JUnit Fonte: http://lijinjoseji.wordpress.com/2008/02/29/testng-56-and-junit-44-which-framework-you-will-choose-for-unit-testing/ Fonte: http://lijinjoseji.wordpress.com/2008/02/29/testng-56-and-junit-44-which-framework-you-will-choose-for-unit-testing/
TestNG vs. JUnit Fonte: http://lijinjoseji.wordpress.com/2008/02/29/testng-56-and-junit-44-which-framework-you-will-choose-for-unit-testing/
Junit x TestNG
Links TestNG: http://www.testng.org Junit 4 vsTestNG: http://www.mkyong.com/unittest/junit-4-vs-testng-comparison/ http://www.ibm.com/developerworks/java/library/j-cq08296/ http://www.artima.com/forums/flat.jsp?forum=276&thread=175064

More Related Content

What's hot

Apresentacao Testes de Unidade
Apresentacao Testes de UnidadeApresentacao Testes de Unidade
Apresentacao Testes de UnidadeAline Ferreira
 
Understanding Unit Testing
Understanding Unit TestingUnderstanding Unit Testing
Understanding Unit Testingikhwanhayat
 
TestNG - The Next Generation of Unit Testing
TestNG - The Next Generation of Unit TestingTestNG - The Next Generation of Unit Testing
TestNG - The Next Generation of Unit TestingBethmi Gunasekara
 
JUnit- A Unit Testing Framework
JUnit- A Unit Testing FrameworkJUnit- A Unit Testing Framework
JUnit- A Unit Testing FrameworkOnkar Deshpande
 
JUnit & Mockito, first steps
JUnit & Mockito, first stepsJUnit & Mockito, first steps
JUnit & Mockito, first stepsRenato Primavera
 
Implementando Testes Unitários em Java - Manoel Pimentel
Implementando Testes Unitários em Java - Manoel PimentelImplementando Testes Unitários em Java - Manoel Pimentel
Implementando Testes Unitários em Java - Manoel PimentelManoel Pimentel Medeiros
 
TestNG introduction
TestNG introductionTestNG introduction
TestNG introductionDenis Bazhin
 
05 junit
05 junit05 junit
05 junitmha4
 
Automação de teste de software
Automação de teste de softwareAutomação de teste de software
Automação de teste de softwareQualister
 
froglogic Squish (Qt edition)
froglogic Squish (Qt edition)froglogic Squish (Qt edition)
froglogic Squish (Qt edition)Amanda Burma
 
ATDD Using Robot Framework
ATDD Using Robot FrameworkATDD Using Robot Framework
ATDD Using Robot FrameworkPekka Klärck
 
TestNG Annotations in Selenium | Edureka
TestNG Annotations in Selenium | EdurekaTestNG Annotations in Selenium | Edureka
TestNG Annotations in Selenium | EdurekaEdureka!
 

What's hot (20)

Apresentacao Testes de Unidade
Apresentacao Testes de UnidadeApresentacao Testes de Unidade
Apresentacao Testes de Unidade
 
Understanding Unit Testing
Understanding Unit TestingUnderstanding Unit Testing
Understanding Unit Testing
 
Teste de software
Teste de softwareTeste de software
Teste de software
 
TestNG
TestNGTestNG
TestNG
 
Plano de teste
Plano de testePlano de teste
Plano de teste
 
TestNG - The Next Generation of Unit Testing
TestNG - The Next Generation of Unit TestingTestNG - The Next Generation of Unit Testing
TestNG - The Next Generation of Unit Testing
 
Functional testing patterns
Functional testing patternsFunctional testing patterns
Functional testing patterns
 
Java Unit Testing
Java Unit TestingJava Unit Testing
Java Unit Testing
 
JUnit- A Unit Testing Framework
JUnit- A Unit Testing FrameworkJUnit- A Unit Testing Framework
JUnit- A Unit Testing Framework
 
JUnit & Mockito, first steps
JUnit & Mockito, first stepsJUnit & Mockito, first steps
JUnit & Mockito, first steps
 
Implementando Testes Unitários em Java - Manoel Pimentel
Implementando Testes Unitários em Java - Manoel PimentelImplementando Testes Unitários em Java - Manoel Pimentel
Implementando Testes Unitários em Java - Manoel Pimentel
 
TestNG introduction
TestNG introductionTestNG introduction
TestNG introduction
 
TestNG Framework
TestNG Framework TestNG Framework
TestNG Framework
 
N Unit Presentation
N Unit PresentationN Unit Presentation
N Unit Presentation
 
05 junit
05 junit05 junit
05 junit
 
Automação de teste de software
Automação de teste de softwareAutomação de teste de software
Automação de teste de software
 
froglogic Squish (Qt edition)
froglogic Squish (Qt edition)froglogic Squish (Qt edition)
froglogic Squish (Qt edition)
 
ATDD Using Robot Framework
ATDD Using Robot FrameworkATDD Using Robot Framework
ATDD Using Robot Framework
 
TestNG Annotations in Selenium | Edureka
TestNG Annotations in Selenium | EdurekaTestNG Annotations in Selenium | Edureka
TestNG Annotations in Selenium | Edureka
 
Unit Testing
Unit TestingUnit Testing
Unit Testing
 

Similar to Testes Unitários usando TestNG

Aplicação de Testes Caixa Branca / Preta. Métodos dos caminhos básicos ou cri...
Aplicação de Testes Caixa Branca / Preta. Métodos dos caminhos básicos ou cri...Aplicação de Testes Caixa Branca / Preta. Métodos dos caminhos básicos ou cri...
Aplicação de Testes Caixa Branca / Preta. Métodos dos caminhos básicos ou cri...Stanley Araújo
 
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...Claudinei Brito Junior
 
Pensando em java univali turbinando seus testes
Pensando em java univali   turbinando seus testesPensando em java univali   turbinando seus testes
Pensando em java univali turbinando seus testesSandro Giacomozzi
 
Fundamentos de Teste de Software - Dev in PF. por Aline Zanin
Fundamentos de Teste de Software - Dev in PF. por Aline ZaninFundamentos de Teste de Software - Dev in PF. por Aline Zanin
Fundamentos de Teste de Software - Dev in PF. por Aline ZaninDevInPF
 
Teste de Integração - Unidade III
Teste de Integração - Unidade IIITeste de Integração - Unidade III
Teste de Integração - Unidade IIIJoão Lourenço
 
Qualidade no desenvolvimento de software com PHPUnit
Qualidade no desenvolvimento de software com PHPUnitQualidade no desenvolvimento de software com PHPUnit
Qualidade no desenvolvimento de software com PHPUnitDiego Tremper
 
Treinamento Testes Unitários - parte 1
Treinamento Testes Unitários - parte 1Treinamento Testes Unitários - parte 1
Treinamento Testes Unitários - parte 1Diego Pacheco
 
1 2 3 - Testando - Automatizando os testes de software
1 2 3 - Testando - Automatizando os testes de software1 2 3 - Testando - Automatizando os testes de software
1 2 3 - Testando - Automatizando os testes de softwareHeider Lopes
 
Padrões para Desenvolvimento de Software Guiado por Testes
Padrões para Desenvolvimento de Software Guiado por TestesPadrões para Desenvolvimento de Software Guiado por Testes
Padrões para Desenvolvimento de Software Guiado por TestesEverton Rodrigues
 
Introdução à Engenharia de Testes de Software
Introdução à Engenharia de Testes de SoftwareIntrodução à Engenharia de Testes de Software
Introdução à Engenharia de Testes de SoftwareCloves da Rocha
 

Similar to Testes Unitários usando TestNG (20)

Aplicação de Testes Caixa Branca / Preta. Métodos dos caminhos básicos ou cri...
Aplicação de Testes Caixa Branca / Preta. Métodos dos caminhos básicos ou cri...Aplicação de Testes Caixa Branca / Preta. Métodos dos caminhos básicos ou cri...
Aplicação de Testes Caixa Branca / Preta. Métodos dos caminhos básicos ou cri...
 
Testes de Unidade com JUnit
Testes de Unidade com JUnitTestes de Unidade com JUnit
Testes de Unidade com JUnit
 
Java 12
Java 12Java 12
Java 12
 
Junit 4.0
Junit 4.0Junit 4.0
Junit 4.0
 
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
 
Pensando em java univali turbinando seus testes
Pensando em java univali   turbinando seus testesPensando em java univali   turbinando seus testes
Pensando em java univali turbinando seus testes
 
JUnit
JUnitJUnit
JUnit
 
Será que testar é simples?
Será que testar é simples?Será que testar é simples?
Será que testar é simples?
 
Framwroks De Testes
Framwroks De  TestesFramwroks De  Testes
Framwroks De Testes
 
Fundamentos de Teste de Software - Dev in PF. por Aline Zanin
Fundamentos de Teste de Software - Dev in PF. por Aline ZaninFundamentos de Teste de Software - Dev in PF. por Aline Zanin
Fundamentos de Teste de Software - Dev in PF. por Aline Zanin
 
Teste de Integração - Unidade III
Teste de Integração - Unidade IIITeste de Integração - Unidade III
Teste de Integração - Unidade III
 
Qualidade no desenvolvimento de software com PHPUnit
Qualidade no desenvolvimento de software com PHPUnitQualidade no desenvolvimento de software com PHPUnit
Qualidade no desenvolvimento de software com PHPUnit
 
J unit xp
J unit xpJ unit xp
J unit xp
 
Treinamento Testes Unitários - parte 1
Treinamento Testes Unitários - parte 1Treinamento Testes Unitários - parte 1
Treinamento Testes Unitários - parte 1
 
Apresentação testes white box
Apresentação testes white boxApresentação testes white box
Apresentação testes white box
 
1 2 3 - Testando - Automatizando os testes de software
1 2 3 - Testando - Automatizando os testes de software1 2 3 - Testando - Automatizando os testes de software
1 2 3 - Testando - Automatizando os testes de software
 
Fases testes
Fases testesFases testes
Fases testes
 
Junit
JunitJunit
Junit
 
Padrões para Desenvolvimento de Software Guiado por Testes
Padrões para Desenvolvimento de Software Guiado por TestesPadrões para Desenvolvimento de Software Guiado por Testes
Padrões para Desenvolvimento de Software Guiado por Testes
 
Introdução à Engenharia de Testes de Software
Introdução à Engenharia de Testes de SoftwareIntrodução à Engenharia de Testes de Software
Introdução à Engenharia de Testes de Software
 

More from Bárbara Cabral da Conceição, CTFL

[TheBugConference] Testes automatizados de aplicativos na google cloud
[TheBugConference] Testes automatizados de aplicativos na google cloud[TheBugConference] Testes automatizados de aplicativos na google cloud
[TheBugConference] Testes automatizados de aplicativos na google cloudBárbara Cabral da Conceição, CTFL
 
Agile trends 2018 - Usando Especificação por Exemplos para melhorar a eficáci...
Agile trends 2018 - Usando Especificação por Exemplos para melhorar a eficáci...Agile trends 2018 - Usando Especificação por Exemplos para melhorar a eficáci...
Agile trends 2018 - Usando Especificação por Exemplos para melhorar a eficáci...Bárbara Cabral da Conceição, CTFL
 
Introdução à Metodologias de Desenvolvimento Orientadas à Testes com Exemplos...
Introdução à Metodologias de Desenvolvimento Orientadas à Testes com Exemplos...Introdução à Metodologias de Desenvolvimento Orientadas à Testes com Exemplos...
Introdução à Metodologias de Desenvolvimento Orientadas à Testes com Exemplos...Bárbara Cabral da Conceição, CTFL
 
Data Quality Through Model Quality: A Quality Model for Measuring and Improvi...
Data Quality Through Model Quality: A Quality Model for Measuring and Improvi...Data Quality Through Model Quality: A Quality Model for Measuring and Improvi...
Data Quality Through Model Quality: A Quality Model for Measuring and Improvi...Bárbara Cabral da Conceição, CTFL
 

More from Bárbara Cabral da Conceição, CTFL (20)

[TheBugConference] Testes automatizados de aplicativos na google cloud
[TheBugConference] Testes automatizados de aplicativos na google cloud[TheBugConference] Testes automatizados de aplicativos na google cloud
[TheBugConference] Testes automatizados de aplicativos na google cloud
 
Implementando indicadores com google apps script
Implementando indicadores com google apps scriptImplementando indicadores com google apps script
Implementando indicadores com google apps script
 
Saindo do zero com DevOps
Saindo do zero com DevOpsSaindo do zero com DevOps
Saindo do zero com DevOps
 
Testes de ui com docker DevFest2018 - GDG Floripa
Testes de ui com docker DevFest2018 - GDG FloripaTestes de ui com docker DevFest2018 - GDG Floripa
Testes de ui com docker DevFest2018 - GDG Floripa
 
Khomp testes complexos!
Khomp   testes complexos!Khomp   testes complexos!
Khomp testes complexos!
 
Agile trends 2018 - Usando Especificação por Exemplos para melhorar a eficáci...
Agile trends 2018 - Usando Especificação por Exemplos para melhorar a eficáci...Agile trends 2018 - Usando Especificação por Exemplos para melhorar a eficáci...
Agile trends 2018 - Usando Especificação por Exemplos para melhorar a eficáci...
 
[Testes] frameworks de testes end to-end baseados em node js
[Testes] frameworks de testes end to-end baseados em node js [Testes] frameworks de testes end to-end baseados em node js
[Testes] frameworks de testes end to-end baseados em node js
 
[Node js] frameworks de testes end to-end baseados em nodejs
[Node js] frameworks de testes end to-end baseados em nodejs [Node js] frameworks de testes end to-end baseados em nodejs
[Node js] frameworks de testes end to-end baseados em nodejs
 
O que é influência afinal?
O que é influência afinal?O que é influência afinal?
O que é influência afinal?
 
Introdução à Metodologias de Desenvolvimento Orientadas à Testes com Exemplos...
Introdução à Metodologias de Desenvolvimento Orientadas à Testes com Exemplos...Introdução à Metodologias de Desenvolvimento Orientadas à Testes com Exemplos...
Introdução à Metodologias de Desenvolvimento Orientadas à Testes com Exemplos...
 
O que Continuous delivery significa para QA
O que Continuous delivery significa para QAO que Continuous delivery significa para QA
O que Continuous delivery significa para QA
 
Carreira de QA
Carreira de QA Carreira de QA
Carreira de QA
 
Data driven quality - tdc2016
Data driven quality - tdc2016Data driven quality - tdc2016
Data driven quality - tdc2016
 
Agile Trends: Qualidade orientada a Dados
Agile Trends: Qualidade orientada a DadosAgile Trends: Qualidade orientada a Dados
Agile Trends: Qualidade orientada a Dados
 
Lean software testing
Lean software testing Lean software testing
Lean software testing
 
Overview de QA
Overview de QA Overview de QA
Overview de QA
 
UX testing - Onde podemos contribnuir?
UX testing - Onde podemos contribnuir?UX testing - Onde podemos contribnuir?
UX testing - Onde podemos contribnuir?
 
Avaliação da Qualidade da Informação em empresa de TI
Avaliação da Qualidade da Informação em empresa de TIAvaliação da Qualidade da Informação em empresa de TI
Avaliação da Qualidade da Informação em empresa de TI
 
Data Quality Through Model Quality: A Quality Model for Measuring and Improvi...
Data Quality Through Model Quality: A Quality Model for Measuring and Improvi...Data Quality Through Model Quality: A Quality Model for Measuring and Improvi...
Data Quality Through Model Quality: A Quality Model for Measuring and Improvi...
 
Problemas de Qualidade da Informação e Abordagens Atuais
Problemas de Qualidade da Informação e Abordagens AtuaisProblemas de Qualidade da Informação e Abordagens Atuais
Problemas de Qualidade da Informação e Abordagens Atuais
 

Testes Unitários usando TestNG

  • 1. Testes Unitários usando TestNG By Bárbara Cabral
  • 2. Introdução Testes de Software Ajudam a medir a qualidade do software baseando-se nos defeitos(bugs) encontrados. Reduzem o nível de risco* de um sistema como um todo Risco: um fator que pode resultar em futuras consequências negativas; usualmente expressado como impacto e probabilidade Contribuem para o cumprimento de itens contratuais ou requisitos legais acordados com o cliente Como? Encontrando e corrigindo defeitos ANTES do sistema ser implantado em ambiente operacional.
  • 4. Testes Unitários O teste unitário se concentra na verificação da menor unidade do projeto de software. Em sistemas construídos com uso de linguagens orientadas a objetos, como Java , essa unidade pode ser identificada como um método, uma classe ou mesmo um objeto. A partir de cada uma dessas unidades pode ser definido um conjunto de dados de entrada e saída. Entrada: parâmetros Saída: valor de retorno, exceções ou o estado do objeto. Ferramentas de Teste Unitário simulam dados de entrada e verificam se os dados de saída/retorno refletem realmente o comportamento esperado
  • 5. TestNG Ferramenta Open-Source criada para superar as limitações da ferramenta JUnit e prover features adicionais necessárias para testar a última geração de aplicações Java. (by Cedric Beust)
  • 6. TestNG Executa métodos individualmente (não precisa executar toda a classe como no JUnit) É possível habilitar/desabilitar métodos Configuração flexível, com o uso de XML Contém conversor de métodos de JUnit para TestNG (JUnitConverter) Obs: ocorrem alguns erros quando converte métodos de teste com exceção. Até 2008 o Testng não convertia os testes de exceção e Junit para TestNG. Plugin para Eclipse Reports JUnitmode Default HTML reports JUnitReport HTML plug-in
  • 7. Estruturação dos Testes Unitários TestNG cobre diversas estratégias de testes unitários: Agrupamento por cenário, para quem usa casos de uso. Agrupamento por feature, para quem usa FDD, p.ex. Agrupamento por requisitos, no caso de uma metodologia tradicional como o RUP. Agrupamento por caso de teste ou por roteiro de testes. Além disso, ele permite todas ao mesmo tempo se for utilizado o conceito de grupos.
  • 8. Annotations @Test Identifica um método de teste Groups: grupososquais o métodopertence Parameters: parâmetrosqueserãopassadosparasosmétodos de teste, comodeclarado no testng.xml DependsOnGroups: lista de gruposque o métododepende Timeout: duração máxima de execução do teste antes que ele seja considerado uma falha @Configuration Identifica um métodoparaconfigurar testes Métodos de configuraçãopodem ser agrupados e terdependências beforeTestMethod/afterTestMethod (JUnit: setup/tearDown) beforeTestClass/afterTestClass (JUnit: No equivalent) beforeSuite/afterSuite (JUnit: No equivalent) beforeTest/afterTest (Junit: No equivalent) @ExpectedExceptions Indicaque o métodotestadolançaumaoumaisexceções. É possívelchecar as exceçõeslançadas @DataProvider Provêparâmetrosparamétodos de teste @Factory Criaseusprópriosobjtos de test em tempo de execução
  • 9. Configuração com ‘testng.xml’ Arquivo onde são definidas as configurações de execução dos testes: Métodos de testes, classes e pacotes Quais grupos devem ser executados (include-groups) Quais grupos devem ser excluídos (exclude-groups) Define grupos adicionais (grupos de grupos) Se os testes deve, ser executados em paralelo Parâmetros Modo JUnit
  • 10. Testng.xml <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >    <suitename="Suite1" verbose="1" >       <testname="Regression1">      <classes>        <classname="test.sample.ParameterSample"/>         <classname="test.sample.ParameterTest"/>      </classes>    </test> <testname="Nopackage" >       <classes>         <classname="NoPackageTest" />      </classes>    </test>   </suite> <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >   <suitename="Suite1" verbose="1" >    <testname="Regression1"   >       <packages>        <package name="test.sample" />     </packages>   </test> </suite> Executa todas as classes da package Classes de teste em pacotes diferentes. Quando o arquivo testng.xml está no mesmo pacote, só precisa colocar o nome de classe
  • 11. testng.xml <test name=“Testt1">   <groups>     <run>       <exclude name="brokenTests"  />       <include name="checkinTests"  />     </run>   </groups>      <classes>     <class name="test.IndividualMethodsTest">       <methods>         <include name="testMethod" />       </methods>     </class>   </classes> </test> publicclass Test1 {   @Test(groups = { "functest", "checkintest" })   publicvoid testMethod1() {   }     @Test(groups = {"checkintest"} )   publicvoid testMethod2() {   }     @Test(groups = { "functest" })   publicvoid testMethod3() {   } } Vantagem: - Possibilidade de separar grupos de teste como: testes baseados em dados, testes de segurança, testes funcionais, etc... - Possibilidade de criar um grupo para cada funcionalidade.Exemplo: “channel-grid”, “channel-medicao”, “channel-iea”
  • 12. DTD testng.xml Link DTD Spec.
  • 13. Execução de Testes Maior parte do trabalho é corrigiros testes quefalham A maioria dos frameworks exigemque se executemtodos TestNGcria um arquivo testng-failed.xml Vantagem: é possível re-executarapenasos testes quefalharam
  • 14. Report da Execução TestNGpossuiosewguintesrelatórios: JUnitmode Relatórios Default em HTML PluginJUnitReport HTML TestNG’sowntesting
  • 15. Testes dirigidos a dados (Data-DrivenTesting) Utilizando os DataProviders (@DataProvider) Define métodos que podem ser provedores de dados a outros métodos Permite separar os dados da lógica Dados podemvir de objetos java, arquivostexto, banco de dados, etc… Podem ser definidosconjuntos de dados para testes positivos e para testes negativos
  • 16. Testes dirigidos a dados (Exemplo) @Test(dataProvider = “good-strings”) publicvoidparseGoodString(String s) { newParser().parse(s); } @DataProvider(name = “good-strings") publicObject[][] createGoodStrings() { returnnewObject[][] { newObject[] { “2 * 2” }, newObject[] { “3 + 2” }; } }
  • 17. Integração com outros Frameworks Maven (v1 e v2) Spring Framework Selenium Cucumber DBUnit GlassfishUnifiedTest Framework (TestNGBased) http://wiki.java.net/bin/view/Projects/GlassFishQuality DBUnit Emma TestCoverage Outros...
  • 18. TestNG vs. JUnit Fonte: http://lijinjoseji.wordpress.com/2008/02/29/testng-56-and-junit-44-which-framework-you-will-choose-for-unit-testing/
  • 19. TestNG vs. JUnit Fonte: http://lijinjoseji.wordpress.com/2008/02/29/testng-56-and-junit-44-which-framework-you-will-choose-for-unit-testing/ Fonte: http://lijinjoseji.wordpress.com/2008/02/29/testng-56-and-junit-44-which-framework-you-will-choose-for-unit-testing/
  • 20. TestNG vs. JUnit Fonte: http://lijinjoseji.wordpress.com/2008/02/29/testng-56-and-junit-44-which-framework-you-will-choose-for-unit-testing/
  • 22. Links TestNG: http://www.testng.org Junit 4 vsTestNG: http://www.mkyong.com/unittest/junit-4-vs-testng-comparison/ http://www.ibm.com/developerworks/java/library/j-cq08296/ http://www.artima.com/forums/flat.jsp?forum=276&thread=175064