static void run()

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();
    }