Listeners do TestNG – Uma visão geral completa e demonstração

Última atualização: 25 de agosto de 2020 — Continuous Testing Expert
Continuous Testing

Visão geral do TestNG

TestNG significa "Test Next Generation" (Teste de Próxima Geração). É uma estrutura popular de automação de testes que permite criar scripts de código fáceis de ler e gerar relatórios de teste personalizados. Inicialmente, o TestNG foi projetado para realizar testes unitários. Recentemente, foi expandido para abranger todos os tipos de teste, incluindo testes de integração de sistemas e testes unitários. Cedric Beust projetou a ferramenta em 2003, inspirando-se no JUnit e no NUnit. Com recursos poderosos como anotações, listeners do TestNG, provedores de dados, etc., incorporados à ferramenta, o TestNG agora é mais popular e fácil de usar em comparação com o JUnit.

Por que o TestNG é popular?

O TestNG permite que os desenvolvedores escrevam casos de teste facilmente usando anotações que podem ser priorizadas, agrupadas ou executadas com facilidade. Ele oferece suporte a testes orientados a dados e parametrização, integrando-se facilmente a IDEs como Eclipse e IntelliJ e ferramentas de build como Ant, Maven e Gradle. É possível executar casos de teste em paralelo, agrupá-los e executar um grupo específico. O TestNG gera relatórios de teste em HTML com detalhes dos casos de teste ignorados, reprovados e aprovados. Ele também gera logs juntamente com os relatórios.

O que são Listeners do TestNG?

Uma das funcionalidades importantes do framework TestNG são os listeners. Trata-se de uma interface que escuta eventos predefinidos em scripts de teste e modifica o comportamento padrão da ferramenta TestNG. Seja para personalizar relatórios ou gerar logs para testes específicos, os listeners do TestNG permitem isso. Os testadores também podem definir pré-requisitos e configurações de limpeza para cada projeto de teste. Automatize o processo de configuração dos pré-requisitos antes de iniciar os testes e execute operações de limpeza após a conclusão dos testes com um listener do TestNG.

Existem diferentes tipos de Listeners no TestNG.

  • ITestListener
  • ISSuiteListener
  • Repórter
  • IAnnotationTransformador
  • IAnotaçãoTransformador2
  • IMethodInterceptor
  • IHookable
  • IConfigurável
  • ICConfiguraçãoListener
  • IExecutionListener
  • Interceptor de método invocado
  • IInvokedMethodInterceptor2

Embora existam vários listeners, nem todos são usados ​​regularmente. Outros listeners populares do TestNG incluem ITestListener, ISuiteListener e IReporter.

Cada Listener do TestNG contém diferentes métodos invocados para executar uma tarefa específica. Por exemplo, quando um caso de teste falha ou é ignorado, você pode querer tirar uma captura de tela desse caso de teste específico para ver o que deu errado. Nesse caso, você pode invocar o método `onTestFailure()` dentro do `ITestListener` e mover a execução do teste para um bloco específico e executar um evento específico.

Por exemplo, o ITestListner contém os seguintes métodos.

  • onStart (): Invocado no início de um teste.
  • onTestFailure(): Invocado quando o teste falha
  • onTestSuccess(): Invocado quando um teste é aprovado
  • onTestSkipped(): Invocado quando os testes são ignorados.
  • onFinish(): Invocado ao finalizar os testes.
  • onTestFailedButWithinSuccessPercentage(): Invocado quando o teste falha, mas os resultados estão dentro da porcentagem de sucesso.

Ouvinte do IReporter

Gere relatórios personalizados com o Listener do IReporter. Ele invoca o método generateReport() ao executar todos os testes que recebem os seguintes argumentos:

  • suitesO objeto que contém as informações do conjunto de testes, como pacote, método de teste, classe, resultados de teste, etc.
  • xmlSuiteÉ o arquivo XML que contém a lista de conjuntos de testes a serem executados.

IInvocarMétodo:

Esta é uma interface de ouvinte do TestNG, usada para executar ações específicas antes e depois dos testes.

  • antesDeInvocação(): Invocado antes de cada teste.
  • apósInvocação(): Invocado após cada teste.

Procedimento de instalação

Aqui estão os pré-requisitos para usar um Listener do TestNG.

  1. Kit de Desenvolvimento Java (JDK)
  2. Selênio
  3. IDE para criar código (Eclipse ou IntelliJ)
  4. TesteNG
  5. Ferramenta de compilação (Gradle ou Maven)

Passo 1: Instale o Java

Para baixar o Java, acesse o seguinte link:

https://www.oracle.com/in/java/technologies/javase-downloads.html

Baixe os Listeners do Java TestNG

Clique na opção de download do JDK e aceite o contrato de licença.

A instalação do Java é bastante simples. Após o download do software, clique duas vezes no pacote para iniciar a instalação.

Após a conclusão da instalação, será exibida uma mensagem informando que o software foi instalado com sucesso.

Etapa 2: Configurar variáveis ​​de ambiente para Java

Para usar o Java, você deve especificar o caminho do Java no sistema. Para fazer isso,

  • Abra as Propriedades do Sistema -> Configurações Avançadas do Sistema -> Avançado -> Variáveis ​​de Ambiente

Selecione a aba 'Variáveis ​​de usuário para o usuário', clique no caminho e depois em Editar. Agora, adicione o caminho do Java.

  • C:Arquivos de ProgramaJavajdk-14.0.2

No caminho 'variáveis ​​do sistema', insira o caminho da pasta Bin.

  • C:Arquivos de ProgramaJavajdk-14.0.2bin

variáveis ​​de ambiente do TestNG Listeners

Agora o Java está configurado e pronto para uso.

Passo 3: Instale o Eclipse IDE

Para criar e editar o código de teste, você precisa de uma IDE (Ambiente de Desenvolvimento Integrado). Você pode usar o Eclipse ou o IntelliJ. Para instalar o Eclipse, acesse o seguinte link:

https://www.eclipse.org/downloads/

Baixe o Eclipse IDE. A versão mais recente é o Eclipse IDE 2020-06.

Instalar os Listeners do TestNG no Eclipse

Após o download do software, clique duas vezes nele para iniciar o procedimento de instalação.

  1. Escolha o Eclipse IDE para desenvolvedores Java.
  2. Se você vir uma notificação no canto superior direito, clique nela e escolha "atualizar" para que o instalador seja atualizado.
  3. Selecione a pasta de instalação e clique em Instalar.
  4. Agora, o instalador começará a instalar o Eclipse.
  5. Após a conclusão da instalação, clique em Iniciar.
  6. Escolha um espaço de trabalho padrão do Eclipse.
  7. Agora, o Eclipse foi instalado com sucesso. Ao abri-lo pela primeira vez, uma tela de boas-vindas será exibida.

Passo 4: Instale o Selenium WebDriver

Para usar o WebDriver e realizar testes, você deve instalar o Selenium Server. Você pode baixar o Selenium Standalone Server aqui:

https://www.selenium.dev/downloads/

Selenium WebDriver

Após baixar o arquivo zip, extraia-o e guarde o conteúdo em uma pasta separada.

Passo 5: Instale o TestNG

Para instalar o TestNG, abra o Eclipse IDE e clique em Ajuda.

Instalar ouvintes do TestBG

Agora, digite TestNG na caixa de pesquisa e pressione "Ir".

  1. A versão mais recente do Eclipse não exibe o TestNG nos resultados da pesquisa. Como alternativa, visite este site e baixe o TestNG manualmente. https://dl.bintray.com/testng-team/testng-eclipse-release/
  2. Clique na opção "compactado". Na tela seguinte, clique na versão mais recente e baixe o arquivo zip.
  3. Salve o arquivo compactado em uma pasta separada. Agora, abra o Eclipse IDE, clique em "Ajuda" e escolha "Instalar novo software".
  4. Clique em 'Adicionar' e indique o caminho onde você armazenou o arquivo zip do TestNG. Dê também um nome a ele.
  5. Clique em 'Adicionar'. Na tela seguinte, selecione TestNG e clique em Avançar.
  6. Na tela seguinte, revise os itens a serem instalados e clique em Avançar. A próxima tela exibirá um contrato de licença. Aceite-o e clique em Concluir. O programa solicitará que você reinicie o Eclipse.
  7. Após reiniciar o Eclipse, clique em Novo arquivo -> Projeto.
  8. Dê um nome ao seu projeto e clique em Avançar.
  9. Na tela seguinte, clique na aba "Biblioteca" e depois em "Adicionar biblioteca".
  10. Clique em 'Adicionar biblioteca' e selecione 'TestNG'. Clique em Avançar e depois em Concluir. Isso definirá a biblioteca TestNG como a biblioteca padrão para este projeto.
  11. Agora, abra o Eclipse na visualização do explorador de pacotes e clique com o botão direito do mouse no projeto que você criou anteriormente. Escolha Novo -> Outro.
  12. Clique em TestNG, selecione a classe TestNG e clique em Avançar.
  13. Especifique o nome da turma e clique em Concluir.

Agora, o TestNG está pronto para uso.

Passo 6: Instale uma ferramenta de compilação (ex: Gradle)

Ferramentas de compilação para automatizar o processo de criação de aplicativos executáveis ​​a partir do código-fonte. Gradle e Maven são as ferramentas de compilação mais populares.

Acesse o link a seguir e baixe a versão mais recente do Gradle.

https://gradle.org/releases/

Descompacte os arquivos em uma pasta separada. Agora, adicione o caminho da pasta bin do Gradle às variáveis ​​de ambiente. (Siga os passos mencionados na Etapa 2)

  • Exemplo: C:\Gradle\gradle-6.6\bin

Para usar o Gradle no Eclipse, abra o Eclipse IDE -> Novo -> Outro -> Gradle

Listeners do TestNG no Gradle

Para a demonstração de automação de testes em dispositivos móveis, usaremos o seguinte código para Gradle.

[Java]
Aplicar plugin: 'java'
repositórios { mavenCentral() maven { url “https://cloud.experitest.com/repo/” }
}
teste { useTestNG() “20.7”
}
dependências { testCompile grupo: 'org.testng', nome: 'testng', versão: '6.11' testCompile grupo: 'com.experitest', nome: 'SeeTest-client', versão: “20.7”
}
[/Java]

Portanto, seu ambiente de teste está pronto!

Ouvintes do TestNG – Primeira demonstração de teste

Para verificar como funciona um Listener do TestNG, execute este projeto simples.

Crie um novo projeto Java no Eclipse.

Ouvintes TestNG no Eclipse

Dê um nome ao projeto e clique em Avançar.

Novo projeto TestNG Listeners

Agora, clique na aba Biblioteca e depois em Adicionar arquivos JAR externos.

Configurações Java e Listeners do TestNG

Selecione o caminho onde você armazenou os arquivos JAR do Selenium e clique em Concluir.

Agora, você pode ver o arquivo JAR do Selenium listado em 'Bibliotecas Referenciadas' na aba do explorador de pacotes no Eclipse.

Bibliotecas TestNG

Agora, clique com o botão direito do mouse em 'src' e crie um novo pacote e uma nova classe. Dê um nome à classe. Por exemplo, criaremos duas classes aqui. Uma é uma classe pai que contém os listeners e a outra é uma classe filha que executa os casos de teste.

Ouvintes do TestNG no Eclipse

Assim, a primeira classe é criada com o nome ExperitestParent.java.

Na classe pai, usamos dois listeners do TestNG.

  1. O método onTestSuccess() será executado quando o caso de teste for concluído com sucesso.
  2. O método onTestFailure() será executado quando o caso de teste falhar.

Aqui está o código usado para a classe ExperitestParent.java:

[Java]
pacote ExperitestListener;
import org.testng.ITestListener;
import org.testng.ITestResult;
public class ExperitestParent implements ITestListener
{
@Override public void onTestSuccess(ITestResult expresult) {
System.out.print(“Teste aprovado. Detalhes: “+expresult.getName()); } @Override public void onTestFailure(ITestResult expresult) {
System.out.print(“Teste falhou. Detalhes são”+expresult.getName()); }
}
[/Java]

Agora, crie uma nova classe e dê a ela o nome ExperitestChild.java.

Esta classe conterá os casos de teste. Um caso de teste retorna o título do site Experitest e o segundo caso de teste verifica se o título corresponde ao título predefinido. Ela também conterá o Listener do TestNG adicionado da seguinte forma:

  • @Listeners(ExperitestListener.ExperitestParent.class)

Aqui está o código usado para ExperitestChild.java:

[Java]
pacote ExperitestListener;
importar org.openqa.selenium.WebDriver;
importar org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.Listeners;
importar org.testng.annotations.Test;
@Listeners(ExperitestListener.ExperitestParent.class)
public class ExperitestChild { @Test
público void ExperitestTitle()
{
System.setProperty(“webdriver.chrome.driver”, “C:\chromedriver_win32\chromedriver.exe”); WebDriver driver = new ChromeDriver(); driver.get(“https://www.experitest.com”); System.out.print(driver.getTitle()); driver.quit();
} @Test public void ExperitestTitleName() {
System.setProperty(“webdriver.chrome.driver”, “C:\chromedriver_win32\chromedriver.exe”); WebDriver driver = new ChromeDriver(); driver.get(“https://www.experitest.com”); String Actual = driver.getTitle(); String Expected = “Digital.ai”; if (Actual.equals(Expected)) { System.out.println(“Teste aprovado!”); } else { Assert.assertTrue(false); } driver.close(); }
}
[/Java]

Ao executar o conjunto de testes, os listeners do TestNG ficam à escuta dos eventos e reagem quando um teste é aprovado ou reprovado.

Ouvintes do TestNG no console

Neste caso, o teste que retorna o título do site Experitest foi aprovado. O teste que verifica o título falhou.

Resultados TestNG Listeners

TestNG – Automação de Testes para Dispositivos Móveis

Aqui está outro exemplo que executa automação de testes em dispositivos móveis. O Selenium não oferece suporte a testes em dispositivos móveis. Portanto, você deve instalar uma estrutura de automação de testes para dispositivos móveis, como o Appium. No entanto, a configuração e o gerenciamento do Appium envolvem uma curva de aprendizado acentuada. A Experitest resolve esse desafio oferecendo o Appium Studio, que utiliza o Appium, mas elimina todas as complexidades envolvidas. A Experitest também oferece um plugin do Appium Studio para Eclipse, para que você possa executar a automação de testes diretamente do seu ambiente de desenvolvimento integrado (IDE) Eclipse.

Acesse o Eclipse Marketplace e procure por Appium Studio para instalar o plugin.

Ouvintes do TestNG no Eclipse

Após a instalação do plugin, a aba Appium Studio aparecerá no seu ambiente de desenvolvimento Eclipse.

  • Agora, clique no menu Janela e vá para Perspectiva -> Abrir Perspectiva -> Outra.
  • Selecione 'Dispositivo móvel' e clique em 'abrir'.
  • O ambiente de desenvolvimento integrado Eclipse abre a perspectiva para dispositivos móveis.

Agora, você pode executar sua automação de testes em dispositivos móveis diretamente do Eclipse IDE. No entanto, para usar dispositivos móveis em tempo real em seus projetos de automação de testes, você precisa escolher uma assinatura do SeeTest Cloud da Experitest. Você também pode usar a opção de avaliação gratuita.

Eclipse

Agora, crie um novo projeto e, em seguida, crie um pacote e duas classes nesse pacote. As duas classes serão chamadas de SeeTestparent.java e SeeTestchild.java. A classe SeeTestparent conterá os listeners, enquanto a classe SeeTestchild conterá os casos de teste.

Código da classe SeeTestparent.java:

[Java]
pacote com.experitest.auto;
import org.testng.ITestContext;
import org.testng.ITestListener;
import org.testng.ITestResult;
public class SeeTestparent implements ITestListener{ @Override public void onTestSuccess(ITestResult expresult) { System.out.print(“Teste aprovado. Detalhes: “+expresult.getName()); } @Override public void onTestFailure(ITestResult expresult) { System.out.print(“Teste falhou. Detalhes: “+expresult.getName()); @Override public void onFinish(ITestContext arg0) { // TODO Auto-generated method stub } @Override public void onStart(ITestContext arg0) { // TODO Auto-generated method stub } @Override public void onTestFailedButWithinSuccessPercentage(ITestResult arg0) { // TODO Auto-generated method stub } @Override public void onTestSkipped(ITestResult arg0) { // TODO Auto-generated method stub } @Override public void onTestStart(ITestResult arg0) { // TODO Auto-generated method stub }
}
[/Java]

Código SeeTestchild.java:

[Java]
pacote com.experitest.auto;
importar io.appium.java_client.ios.IOSDriver;
importar io.appium.java_client.ios.IOSElement;
import io.appium.java_client.remote.IOSMobileCapabilityType;
import io.appium.java_client.remote.MobileCapabilityType;
importar org.openqa.selenium.By;
import org.openqa.selenium.ScreenOrientation;
import org.openqa.selenium.remote.DesiredCapabilities;
import static org.testng.Assert.assertTrue;
import java.net.MalformedURLException;
importar java.net.URL;
import org.testng.Assert;
import org.testng.annotations.*;
@Listeners(com.experitest.auto.SeeTestparent.class)
public class SeeTestchild { private String host = “https://cloud.SeeTest.io”; private String accessKey = “insira sua chave de acesso aqui”; protected IOSDriver driver = null; DesiredCapabilities dc = new DesiredCapabilities(); @BeforeTest public void setUp1() throws MalformedURLException { dc.setCapability(“testName”, “Quick Start iOS Native Demo”); dc.setCapability(“accessKey”, accessKey); dc.setCapability(“deviceQuery”, “@os='ios' and @category='PHONE'”); dc.setCapability(MobileCapabilityType.APP, “cloud:com.experitest.ExperiBank”); dc.setCapability(IOSMobileCapabilityType.BUNDLE_ID, “com.experitest.ExperiBank”); driver = new IOSDriver<>(new URL(“https://cloud.SeeTest.io/wd/hub”), dc); @Test public void SeeTestDemo1() { driver.rotate(ScreenOrientation.PORTRAIT); driver.findElement(By.xpath(“//*[@id='usernameTextField']”)).sendKeys(“company”); driver.hideKeyboard(); driver.findElement(By.xpath(“//*[@id='passwordTextField']”)).sendKeys(“company”); driver.findElement(By.xpath(“//*[@id='loginButton']”)).click(); driver.findElement(By.xpath(“//*[@id='makePaymentButton']”)).click(); driver.findElement(By.xpath(“//*[@id='phoneTextField']”)).sendKeys(“0541234567”); driver.findElement(By.xpath(“//*[@id='nameTextField']”)).sendKeys(“Jon Snow”); driver.findElement(By.xpath(“//*[@id='amountTextField']”)).sendKeys(“50”); driver.findElement(By.xpath(“//*[@id='countryButton']”)).click(); driver.findElement(By.xpath(“//*[@id='Switzerland']”)).click(); driver.findElement(By.xpath(“//*[@id='sendPaymentButton']”)).click(); driver.findElement(By.xpath(“//*[@id='Yes']”)).click(); driver.findElement(By.xpath(“//*[@id='logoutButton']”)).click(); } @Test public void SeeTestDemo2() { Assert.assertTrue(false); } @AfterTest public void tearDown1() { driver.quit(); } }
[/Java]

Segue o relatório. Dos dois testes, um falhou.

teste reprovado

Os relatórios mostram os detalhes do teste reprovado aqui:

teste falhou

Aqui, você pode ver o Listener do TestNG relatando os detalhes do teste aprovado e do teste reprovado.

teste falhou 3

Conclusão

O TestNG Listener é um recurso prático para equipes de teste e controle de qualidade que permite automatizar projetos de teste com facilidade e identificar o desempenho de cada um. Para um teste com falha ou ignorado, é possível capturar uma imagem da tela e identificar o motivo da falha ou da omissão.

A nuvem SeeTest permite que você aproveite Listeners do TestNG para executar facilmente seus projetos de automação de testes a partir da sua IDE favorita, com a possibilidade de personalizar relatórios e logs para análises e relatórios em tempo real. Saiba mais em Digital.ai Continuous Testing.

Guy Arieli - CTO

Também recomendamos