TestNG Groups: Can we include two group names and create one group to run tests?

java, selenium, selenium-rc, selenium-webdriver, testng

Solution

You can actually do this "semi off the shelf": http://testng.org/doc/documentation-main.html#beanshell

In your particular case, it would be something like this:

<method-selectors>
  <method-selector>
    <script language="beanshell"><![CDATA[
       return groups.containsKey("tsg1.0") && groups.containsKey("smoke");
     ]]></script>
  </method-selector>
</method-selectors>

Just answered a similar question in more detail here: Is it possible to put a condition to TestNG to run the test if that is member of two groups?

Problem

I have following testng test methods. ``` @Test(groups = {"tsg1.0","smoke"}) public void testLoginWithInvalidCredentials(String usernameValue, String passwordValue){ /*Print something*/ } @Test(groups = {"tsg1.0"}) public void testLoginWithUserIdOnly(String username) { /*Print something*/ } @Test(groups = {"tsg1.0"}) public void testLoginWithPasswordOnly(String password) { /*Print something*/ } ``` Here is the testng xml used to test the above methods. ``` <suite name="Suite" thread-count="1" verbose="10"> <test name="Test"> <groups> <run> <include name="tsg1.0"/> </run> </groups> <packages> <package name="<test package name>"/> </packages> </test> </suite> ``` Is there a way where in I can create one xml which will include tests with Groups "TSG1.0" AND "SMOKE". I want only the first test(testLoginWithInvalidCredentials) to be run in this case. Please help. Thanks, Mike. PS: The following won't work as It will include tsg1.0 or smoke. I want an and condition here... ``` <run> <include name="tsg1.0"/> <include name="smoke"/> </run> ```

Original source

Related problems