TestNG - Registrazione personalizzata
Avevamo letto in precedenza le diverse opzioni fornite da TestNG per la registrazione e la segnalazione. Ora impariamo come iniziare a usarli. Per cominciare, scriveremo un programma di esempio in cui useremo l'interfaccia ITestListener per scopi di registrazione.
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 una classe di registrazione personalizzata
Crea un'altra nuova classe denominata CustomListener.java in 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 precedente estende TestListenerAdapter , che implementa ITestListener con metodi vuoti. Quindi, non è necessario sovrascrivere altri metodi dall'interfaccia. Puoi implementare l'interfaccia direttamente, se preferisci.
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 Logger Suite">
<listeners>
<listener class-name = "CustomListener" />
</listeners>
<test name = "Simple Logger test">
<classes>
<class name = "SampleTest" />
</classes>
</test>
</suite>
Compilare le classi SampleTest, CustomListener utilizzando javac.
C:\TestNG_WORKSPACE>javac CustomListener.java SampleTest.java
Ora, esegui testng.xml.
C:\TestNG_WORKSPACE>java -cp "C:\TestNG_WORKSPACE" org.testng.TestNG testng.xml
Verifica l'output.
testMethodOne--Test method success
testMethodTwo--Test method failed
testMethodThree--Test method skipped
===============================================
Simple Logger Suite
Total tests run: 3, Failures: 1, Skips: 1
===============================================
Abbiamo creato una classe logger personalizzata, che implementa l'interfaccia ITestListener e si è collegata alla suite di test TestNG come listener. I metodi di questa classe listener vengono richiamati da TestNG all'avvio del test, al fallimento del test, al successo del test e così via. È possibile implementare e aggiungere più listener all'esecuzione della suite di test, TestNG richiamerà tutti i listener collegati alla suite di test.
I listener di registrazione vengono utilizzati principalmente quando è necessario vedere lo stato continuo dell'esecuzione del test quando i test vengono eseguiti.