У меня есть набор тестов, в котором я хотел бы получить полный список всех тестовых методов TestNG (полностью квалифицированных).
Пример вывода мне нужен:
com.package.SomeTest.testSomething
com.package.OtherTest.testOtherThing
Как мне получить этот список методов?
2 ответа
Самый простой способ получить полный список всех методов тестирования - выполнить набор тестов с 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
также можно переписать с помощью функции до 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 с определенным слушателем, и после того, как выходной файл будет записан, фактическое выполнение тестов может быть отменено.
Отказ от ответственности: я разработал библиотеку, которая делает это, но предназначена только для отключенных тестов. С помощью всего лишь нескольких модификаций вы можете настроить вывод всех тестов.
Просто перейдите к следующему коду:
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 ().
Новые вопросы
testng
TestNG - это среда тестирования, ориентированная на предоставление возможностей как модульного, так и функционального тестирования на языке программирования Java. Он поддерживает параллельное тестирование, поставщики данных, зависимости, группы и другие функции.