Самый простой подход для получения полного списка всех методов тестирования - выполнить набор тестов с org.testng.ISuiteListener
.Этот слушатель получает полностью заполненный ISuite
, который предоставляет List
всех тестовых методов, которые будут выполнены.
ISuiteListener
предоставляет метод onStart
, который вызывается перед любымиз тест-методов выполняются.Это позволяет нам получить список всех тестовых методов, которые будут выполнены, и записать их в файл.
Здесь я использовал ISuiteListener
:
package helper;
import org.testng.ISuite;
import org.testng.ISuiteListener;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintStream;
public class LogSuiteListener implements ISuiteListener {
@Override
public void onStart(ISuite suite) {
try (PrintStream out = new PrintStream(new FileOutputStream("/tmp/test-list.txt"))) {
suite.getAllMethods().stream()
.map(m -> m.getTestClass().getName() + "." + m.getMethodName())
.forEach(out::println);
} catch (IOException e) {
System.err.println("FAILED TO WRITE TO FILE!");
throw new RuntimeException(e);
}
}
@Override
public void onFinish(ISuite suite) {}
}
Яиспользуя Lambdas в этом примере, но метод onStart
также можно переписать с помощью функции pre-Java8 следующим образом:
for (ITestNGMethod m : suite.getAllMethods()) {
out.println(m.getTestClass.getName() + "." + m.getMethodName());
}
Чтобы добавить слушателя в TestNG-Suite, просто добавьте следующий XML-Прилагается к определению комплекта testng.xml:
<listeners>
<listener class-name="helper.LogSuiteListener"/>
</listeners>
Примечание: если вам нужен только список тестов, которые будут выполнены.Вам нужно только запустить TestNG-runner с определенным слушателем, и после того, как выходной файл будет записан, фактическое выполнение тестов может быть отменено.