package org.mockitousage.testng.utils;
import org.testng.IConfigurationListener;
import org.testng.ITestContext;
import org.testng.ITestListener;
import org.testng.ITestResult;
import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;
/**
* <strong>Not thread-safe</strong> listener that record only failures, either on the test or on a configuration method.
*/
public class FailureRecordingListener implements ITestListener, IConfigurationListener {
public List<ITestResult> failedTestResults = new ArrayList<ITestResult>();
public void onTestFailure(ITestResult result) {
failedTestResults.add(result);
}
public void onConfigurationFailure(ITestResult result) {
failedTestResults.add(result);
}
public Throwable lastThrowable() {
ListIterator<ITestResult> iterator = failedTestResults.listIterator(failedTestResults.size());
return iterator.hasPrevious() ? iterator.previous().getThrowable() : null;
}
public void clear() {
failedTestResults.clear();
}
// don't care bellow
public void onConfigurationSuccess(ITestResult itr) { }
public void onConfigurationSkip(ITestResult itr) { }
public void onTestStart(ITestResult result) { }
public void onTestSuccess(ITestResult result) { }
public void onTestSkipped(ITestResult result) { }
public void onTestFailedButWithinSuccessPercentage(ITestResult result) { }
public void onStart(ITestContext context) { }
public void onFinish(ITestContext context) { }
}