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.