В TestNG есть интерфейс ITestListener, который позволяет следить за выполнением теста.

Есть набор тестов:

import static org.testng.Assert.assertEquals;

import org.testng.annotations.Test;




public class T1 {
	
	@Test
	public void test1() {
		System.out.println("--- 1 ---");
		assertEquals(3, 2+ 1);
	}
	
	@Test
	public void test2() {
		System.out.println("--- 2 ---");
		assertEquals(1, 2+ 1);
	}

	@Test(dependsOnMethods = {"test2"})
	public void test3() {
		System.out.println("--- 3 ---");
		assertEquals(3, 2+ 1);
	}
}

Создадим класс SetUpTearDown который будет следить за состоянием теста.

import org.testng.ITestContext;
import org.testng.ITestListener;
import org.testng.ITestResult;

public class SetUpTearDown implements ITestListener {

	@Override
	public void onFinish(ITestContext arg0) {
		System.out.println("----------FINISH ALL----------------\n\n");
		
	}

	@Override
	public void onStart(ITestContext arg0) {
		System.out.println("----------Start ALL----------------\n\n");
		
	}

	@Override
	public void onTestFailedButWithinSuccessPercentage(ITestResult res) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void onTestFailure(ITestResult res) {
		System.out.println(res.getMethod().getMethodName() + " FAILURE !!! \n\n");
		
	}

	@Override
	public void onTestSkipped(ITestResult res) {
		System.out.println(res.getMethod().getMethodName() + " SKIPPED !!! \n\n");
		
	}

	@Override
	public void onTestStart(ITestResult res) {
		System.out.println("Start test " + res.getMethod().getMethodName());
		
	}

	@Override
	public void onTestSuccess(ITestResult res) {
		System.out.println(res.getMethod().getMethodName() + " PASSED !!!  \n\n");
		
	}

}

Добавим этот листенер в XML:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite" parallel="false">
	<listeners>
		
		<listener class-name="mp.SetUpTearDown" />
	</listeners>
	<test name="Test">
		<classes>
			<class name="p1.T1" />
		</classes>
	</test> <!-- Test -->
</suite> <!-- Suite -->

Если запустить данную XML, то вывод на консоль будет:

———-Start ALL—————-

Start test test2
— 2 —
test2 FAILURE !!!

Start test test1
— 1 —
test1 PASSED !!!

test3 SKIPPED !!!

———-FINISH ALL—————-

Как видим, все отработало корректно.

Т.е. сначала выполнился метод onStart, далее перед каждым тестом будет выполняться метод onTestStart. В зависимости от
результата теста будут выполняться методы onTestSuccess/onTestFailure/onTestFailure. В конце всех методов будет выполнен метод onFinish.

Реклама