TestNG - Journalisation personnalisée

Nous avions déjà lu les différentes options que TestNG fournit pour la journalisation et la création de rapports. Maintenant, apprenons comment commencer à les utiliser. Pour commencer, nous allons écrire un exemple de programme dans lequel nous utiliserons l'interface ITestListener à des fins de journalisation.

Créer une classe de cas de test

Créez une classe Java, par exemple SampleTest.java dans 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 de test précédente contient trois méthodes de test parmi lesquelles testMethodOne et testMethodThree réussiront une fois exécutées, tandis que testMethodTwo échoue en passant une valeur booléenne fausse à la méthode Assert.assertTrue, qui est utilisée pour les conditions de vérité dans les tests.

Créer une classe de journalisation personnalisée

Créez une autre nouvelle classe nommée CustomListener.java dans C:\> TestNG_WORKSPACE.

import org.testng.ITestResult;
import org.testng.TestListenerAdapter;

public class CustomListener extends TestListenerAdapter{
   private int m_count = 0;
	 
   @Override
   public void onTestFailure(ITestResult tr) {
      log(tr.getName()+ "--Test method failed\n");
   }
	 
   @Override
   public void onTestSkipped(ITestResult tr) {
      log(tr.getName()+ "--Test method skipped\n");
   }
	 
   @Override
   public void onTestSuccess(ITestResult tr) {
      log(tr.getName()+ "--Test method success\n");
   }
	 
   private void log(String string) {
      System.out.print(string);
      if (++m_count % 40 == 0) {
         System.out.println("");
      }
   }

}

La classe ci-dessus étend TestListenerAdapter , qui implémente ITestListener avec des méthodes vides. Par conséquent, pas besoin de remplacer les autres méthodes de l'interface. Vous pouvez implémenter l'interface directement, si vous préférez.

Créer testng.xml

Créez testng.xml dans C:\> TestNG_WORKSPACE pour exécuter des cas de test.

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

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

Compilez les classes SampleTest, CustomListener à l'aide de javac.

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

Maintenant, exécutez le testng.xml.

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

Vérifiez la sortie.

testMethodOne--Test method success
testMethodTwo--Test method failed
testMethodThree--Test method skipped

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

Nous avons créé une classe de journalisation personnalisée, qui implémente l'interface ITestListener et s'est attachée à la suite de tests TestNG en tant qu'écouteur. Les méthodes de cette classe d'écouteur sont appelées par TestNG au démarrage du test, à l'échec du test, au succès du test, etc. Plusieurs écouteurs peuvent être implémentés et ajoutés à l'exécution de la suite de tests, TestNG appellera tous les écouteurs qui sont attachés à la suite de tests.

Les écouteurs de journalisation sont principalement utilisés lorsque nous avons besoin de voir l'état continu de l'exécution du test lorsque les tests sont exécutés.