Как получить список всех методов испытаний TestNG - PullRequest
0 голосов
/ 23 октября 2018

У меня есть набор тестов, в котором я хотел бы получить полный список всех методов тестирования TestNG (полностью квалифицированных).

Пример вывода, который мне нужен:

com.package.SomeTest.testSomething
com.package.OtherTest.testOtherThing

Как я могу получить этот список методов?

Ответы [ 2 ]

0 голосов
/ 23 октября 2018

Отказ от ответственности: я разработал библиотеку , которая делает это, но особенно для отключенных тестов.С помощью всего лишь нескольких модификаций вы можете настроить его на вывод всех тестов.

Просто перейдите к следующему коду:

while (matcher.find()) {
    if (matcher.group().contains("enabled = false") | matcher.group().contains("enabled=false")) {
        Matcher disabledTestMatcher = DISABLED_TEST_REGEX_EXPRESSION.matcher(matcher.group());
        disabledTestMatcher.find();

        // Add extracted test and remove all its strings but test name.
        extractedTests.add(disabledTestMatcher.group()
                .replace("void", "")
                .replace("{", "")
                .replace("()",""));
    }

и удалите все предложение if и выведите matcher.group ().

0 голосов
/ 23 октября 2018

Самый простой подход для получения полного списка всех методов тестирования - выполнить набор тестов с 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 с определенным слушателем, и после того, как выходной файл будет записан, фактическое выполнение тестов может быть отменено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...