问题
So basically I am wondering how could I run a specific test case (a method) instead of running a whole class.
I am running tests using a combination of Selenium/Maven/TestNG. My current testing setup looks something like this:
simplified command to run tests:
mvn test -DtestSuiteName="test"
contents of test.xml used in the command above:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Selenium Testng Template">
    <test name="TestSuiteTest">
        <classes>
            <class name="listeners.Test_Listener"/>
            <class name="tests.example_test_suite_name"/>
        </classes>
    </test>
</suite>
What the Listener does is basically set up the enviroment for the tests, it starts a pre-configured WebDriver instance and closes it after all the tests are run. It looks something like this:
@Listeners(Listener_Helper)
class Test_Listener implements IExecutionListener {
    @BeforeSuite
    void openBrowser(){
        prepareEnviroment()
    }
    @AfterSuite
    void closeBrowser(){
        cleanUp()
    }
Now to the contents of a example test file. It consists of a class that is somewhat of a test suite, and it that contains several methods, which are somewhat of a test case.
class example_test_suite_name {
    @Test(priority=1)
    void test_name_one() {
        //test instructions
    }
    @Test(priority=2)
    void test_name_two() {
        //test instructions
    }
To summarize, It's not a problem to launch a test suite - a class, but how do I launch a single test case - one method of a class?
Let's say I only wanted to start "test_name_one" but not other methods that class contains. Unfortunately I couldn't find anything related to that on the web.
Any hint regarding this matter would be highly appreciated
回答1:
You can specify test method more in xml file
<groups>
        <run>
            <include name="setName"></include>
        </run>
    </groups>
    <classes>
        <class name="com.journaldev.xml.TestNGXMLTest">
        </class>
    </classes>
Above test suite will only execute methods in setName group, so only test_setName method will be executed.
来源:https://stackoverflow.com/questions/62406674/how-to-run-a-single-test-case-method-instead-of-whole-test-suite-class-using