TestNG - registro personalizado
Tínhamos lido anteriormente sobre as diferentes opções que TestNG fornece para registro e relatórios. Agora, vamos aprender como começar a usá-los. Para começar, escreveremos um programa de amostra no qual usaremos a interface ITestListener para fins de registro.
Criar classe de caso de teste
Crie uma classe java, digamos, SampleTest.java dentro 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);
}
}
A classe de teste anterior contém três métodos de teste nos quais testMethodOne e testMethodThree serão aprovados quando executados, enquanto testMethodTwo falha ao passar um valor booleano falso para o método Assert.assertTrue, que é usado para condições de verdade nos testes.
Criar classe de registro personalizada
Crie outra nova classe chamada CustomListener.java dentro 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("");
}
}
}
A classe acima estende TestListenerAdapter , que implementa ITestListener com métodos vazios. Portanto, não há necessidade de substituir outros métodos da interface. Você pode implementar a interface diretamente, se preferir.
Crie testng.xml
Crie testng.xml em C:\> TestNG_WORKSPACE para executar caso (s) de teste.
<?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>
Compile as classes SampleTest e CustomListener usando javac.
C:\TestNG_WORKSPACE>javac CustomListener.java SampleTest.java
Agora, execute o testng.xml.
C:\TestNG_WORKSPACE>java -cp "C:\TestNG_WORKSPACE" org.testng.TestNG testng.xml
Verifique a saída.
testMethodOne--Test method success
testMethodTwo--Test method failed
testMethodThree--Test method skipped
===============================================
Simple Logger Suite
Total tests run: 3, Failures: 1, Skips: 1
===============================================
Criamos uma classe de logger customizada, que implementa a interface ITestListener e se conecta ao conjunto de testes TestNG como um ouvinte. Os métodos dessa classe de ouvinte são chamados por TestNG quando o teste é iniciado, na falha do teste, no sucesso do teste e assim por diante. Vários ouvintes podem ser implementados e adicionados à execução do conjunto de testes, TestNG invocará todos os ouvintes que estão anexados ao conjunto de testes.
Os ouvintes de registro são usados principalmente quando precisamos ver o status contínuo da execução do teste quando os testes estão sendo executados.