我有一个测试套件,我想在其中获得所有TestNG测试方法的完整列表(完全合格)。
我需要的示例输出:
com.package.SomeTest.testSomething
com.package.OtherTest.testOtherThing
如何获取此方法列表?
答案 0 :(得分:0)
获取所有测试方法的完整列表的最简单方法是使用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侦听的XML添加到您的testng.xml套件定义中:
<listeners>
<listener class-name="helper.LogSuiteListener"/>
</listeners>
作为旁注:如果仅需要测试列表,将执行该列表。您只需要在定义了侦听器的情况下启动TestNG-runner,然后在写入输出文件后即可取消测试的实际执行。
答案 1 :(得分:0)
免责声明:我已经开发了library,但它对禁用测试的特殊性。只需进行一些修改,就可以将其设置为输出所有测试。
只需转到以下代码:
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()。