TestNG - Reporter personalizzato

In questa sezione, tratteremo, con un esempio, il metodo per scrivere il tuo reporter personalizzato e allegarlo a TestNG. Per scrivere una classe reporter personalizzata, la nostra classe di estensione deve implementare l'interfaccia IReporter. Andiamo avanti e creiamo un esempio con il reporter personalizzato.

Crea classe test case

Crea una classe Java, diciamo, SampleTest.java in C:\> TestNG_WORKSPACE.

import org.testng.Assert;
import org.testng.annotations.Test;

public class SampleTest {
   @Test
   public void testMethodOne() {
      Assert.assertTrue(true);
   }
	  
   @Test
   public void testMethodTwo() {
      Assert.assertTrue(false);
   }
	  
   @Test(dependsOnMethods = {"testMethodTwo"})
   public void testMethodThree() {
      Assert.assertTrue(true);
   }
}

La classe di test precedente contiene tre metodi di test di cui testMethodOne e testMethodThree passeranno quando vengono eseguiti, mentre testMethodTwo viene fatto fallire passando un valore booleano falso al metodo Assert.assertTrue, che viene utilizzato per le condizioni di verità nei test.

Crea classe di rapporti personalizzati

Crea un'altra nuova classe denominata CustomReporter.java in C:\> TestNG_WORKSPACE.

import java.util.List;
import java.util.Map;

import org.testng.IReporter;
import org.testng.ISuite;
import org.testng.ISuiteResult;
import org.testng.ITestContext;
import org.testng.xml.XmlSuite;

public class CustomReporter implements IReporter{
   @Override
   public void generateReport(List<XmlSuite> xmlSuites, List<ISuite> suites,
      String outputDirectory) {
      
      //Iterating over each suite included in the test
      for (ISuite suite : suites) {
            
         //Following code gets the suite name
         String suiteName = suite.getName();
            
         //Getting the results for the said suite
         Map<String, ISuiteResult> suiteResults = suite.getResults();
         for (ISuiteResult sr : suiteResults.values()) {
            ITestContext tc = sr.getTestContext();
            System.out.println("Passed tests for suite '" + suiteName +
               "' is:" + tc.getPassedTests().getAllResults().size());
            System.out.println("Failed tests for suite '" + suiteName +
               "' is:" + tc.getFailedTests().getAllResults().size());
            System.out.println("Skipped tests for suite '" + suiteName +
               "' is:" + tc.getSkippedTests().getAllResults().size());
         }
      }
   }
}

La classe precedente implementa l' interfaccia org.testng.IReporter . Implementa la definizione per il metodo generateReport del iReporter interfaccia. Il metodo richiede tre argomenti:

  • xmlSuite, che è l'elenco delle suite menzionate nell'XML di test in esecuzione.

  • suites, che contiene le informazioni sulla suite dopo l'esecuzione del test. Questo oggetto contiene tutte le informazioni sui pacchetti, sulle classi, sui metodi di test e sui risultati dell'esecuzione del test.

  • outputDirectory, che contiene le informazioni del percorso della cartella di output, dove verranno generati i report.

Crea testng.xml

Crea testng.xml in C:\> TestNG_WORKSPACE per eseguire uno o più casi di test.

<?xml version = "1.0" encoding = "UTF-8"?>
<suite name = "Simple Reporter Suite">
   <listeners>
      <listener class-name = "CustomReporter" />
   </listeners>

   <test name = "Simple Reporter test">
      <classes>
         <class name = "SampleTest" />
      </classes>
   </test>
</suite>

Compilare le classi SampleTest, CustomReporter utilizzando javac.

C:\TestNG_WORKSPACE>javac CustomReporter.java SampleTest.java

Ora, esegui testng.xml.

C:\TestNG_WORKSPACE>java -cp "C:\TestNG_WORKSPACE" org.testng.TestNG testng.xml

Verifica l'output.

===============================================
Simple Reporter Suite
Total tests run: 3, Failures: 1, Skips: 1
===============================================

Passed tests for suite 'Simple Reporter Suite' is:1
Failed tests for suite 'Simple Reporter Suite' is:1
Skipped tests for suite 'Simple Reporter Suite' is:1

L'esempio precedente mostra un semplice reporter personalizzato, che stampa il numero di test non riusciti, superati e ignorati sulla console per ciascuna suite inclusa nell'esecuzione di tale test. Reporter viene utilizzato principalmente per generare il report finale per l'esecuzione del test. L'estensione può essere utilizzata per generare file in formato XML, HTML, XLS, CSV o testo a seconda dei requisiti del report.