I want to Skip (so I will see at the report that the tests / classes were skipped) with ITestListener, what I did is the listener class like so:
@Override public void onStart(ITestContext context) { String deviceName = context.getCurrentXmlTest().getParameter("deviceName"); System.out.println("device name : "+deviceName); String className = context.getClass().getSimpleName(); System.out.println("class name : "+className); if(!deviceName.contains("Galaxy S8")) { System.out.println("Skipping class name : "+className); throw new SkipException("Skipping class: " + className); } } and I have test class :
@Test(priority = 1) public void installAndDenyPhoneAccess() { onePlus6ProInstallProcess.denyPhoneAccess(); } at the testng.xml I added the listener:
<?xml version="1.0" encoding="UTF-8"?> <suite name="Suite" parallel = "tests" configfailurepolicy="continue"> <listeners> <listener class-name="com.qa.listeners.TestListener" /> </listeners> <test name="Samsung Note 10 - 5G"> <listeners> <listener class-name="com.qa.listeners.TestListener" /> </listeners> <parameter name="emulator" value="false" /> <parameter name="platformName" value="Android" /> <parameter name="udid" value="RPM" /> <parameter name="deviceName" value="Note 10 - 5G" /> <parameter name="systemPort" value="10000" /> <parameter name="chromeDriverPort" value="11000" /> <classes> <class name="note5.Installation"/> </classes> </test> <test name="Redmi 6A"> <listeners> <listener class-name="com.qa.listeners.TestListener" /> </listeners> <parameter name="emulator" value="false" /> <parameter name="platformName" value="Android" /> <parameter name="udid" value="192b" /> <parameter name="deviceName" value="Redmi 6A" /> <parameter name="systemPort" value="10000" /> <parameter name="chromeDriverPort" value="11000" /> <classes> <class name="redmi6A.Installation"/> </classes> </test> <test name="OnePlus 6 Pro"> <parameter name="emulator" value="false" /> <parameter name="platformName" value="Android" /> <parameter name="udid" value="73" /> <parameter name="deviceName" value="onePlus 6Pro" /> <parameter name="systemPort" value="10000" /> <parameter name="chromeDriverPort" value="11000" /> <classes> <class name="onePlus6Pro.Installation"/> </classes> </test> <test name="Galaxy S8"> <parameter name="emulator" value="false" /> <parameter name="platformName" value="Android" /> <parameter name="udid" value="ce3cb10c" /> <parameter name="deviceName" value="Galaxy S8" /> <parameter name="systemPort" value="10000" /> <parameter name="chromeDriverPort" value="11000" /> <classes> <class name="galaxyS8.Installation"/> </classes> </test> <test name="Samsung A21s"> <listeners> <listener class-name="com.qa.listeners.TestListener" /> </listeners> <parameter name="emulator" value="false" /> <parameter name="platformName" value="Android" /> <parameter name="udid" value="RdM" /> <parameter name="deviceName" value="Samsung A21s" /> <parameter name="systemPort" value="10000" /> <parameter name="chromeDriverPort" value="11000" /> <classes> <class name="a21S.Installation"/> </classes> </test> now the tests are not skipped and anyhow not all of them when runing together, only when run two. So how to skip it? and also how to skip the all class if it can?
System.out.println(testMethod.getDeclaringClass().getName())?a12Sin the name andannotation.setEnabled(false)invoked the method from this class will not be executed. I've tested this behavior with testNG 7.5 on a simple example.a12S. 2) you are using some testNG version, which has a bug (it's unlikely) 3) you've applied multipleIAnnotationTransformerlisteners. One disables the test, but the other enables. 4) listener applied in the code on class, not in xml (but you sayed that it's in xml) 5) junit @Test annotation instead of testng. I've mentioned all the potential reasouns I might remember.