in surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGExecutor.java [92:156]
static void run(
Iterable<Class<?>> testClasses,
String testSourceDirectory,
Map<String, String> options, // string,string because TestNGMapConfigurator#configure()
TestNGReporter testNGReporter,
File reportsDirectory,
TestListResolver methodFilter,
List<CommandLineOption> mainCliOptions,
int skipAfterFailureCount)
throws TestSetFailedException {
TestNG testng = new TestNG(true);
Configurator configurator = getConfigurator(options.get("testng.configurator"));
if (isCliDebugOrShowErrors(mainCliOptions)) {
System.out.println(
"Configuring TestNG with: " + configurator.getClass().getSimpleName());
}
XmlMethodSelector groupMatchingSelector = createGroupMatchingSelector(options);
XmlMethodSelector methodNameFilteringSelector = createMethodNameFilteringSelector(methodFilter);
Map<String, SuiteAndNamedTests> suitesNames = new HashMap<>();
List<XmlSuite> xmlSuites = new ArrayList<>();
for (Class<?> testClass : testClasses) {
TestMetadata metadata = findTestMetadata(testClass);
SuiteAndNamedTests suiteAndNamedTests = suitesNames.get(metadata.suiteName);
if (suiteAndNamedTests == null) {
suiteAndNamedTests = new SuiteAndNamedTests();
suiteAndNamedTests.xmlSuite.setName(metadata.suiteName);
configurator.configure(suiteAndNamedTests.xmlSuite, options);
xmlSuites.add(suiteAndNamedTests.xmlSuite);
suitesNames.put(metadata.suiteName, suiteAndNamedTests);
}
XmlTest xmlTest = suiteAndNamedTests.testNameToTest.get(metadata.testName);
if (xmlTest == null) {
xmlTest = new XmlTest(suiteAndNamedTests.xmlSuite);
xmlTest.setName(metadata.testName);
addSelector(xmlTest, groupMatchingSelector);
addSelector(xmlTest, methodNameFilteringSelector);
xmlTest.setXmlClasses(new ArrayList<>());
suiteAndNamedTests.testNameToTest.put(metadata.testName, xmlTest);
}
xmlTest.getXmlClasses()
.add(newXmlClassInstance(
testClass.getName(), xmlTest.getXmlClasses().size()));
}
testng.setXmlSuites(xmlSuites);
configurator.configure(testng, options);
postConfigure(
testng,
testSourceDirectory,
testNGReporter,
reportsDirectory,
skipAfterFailureCount,
extractVerboseLevel(options));
testng.run();
}