i am using file injection:
<configuration>
<suiteXmlFiles>
<!-- Suite file injection parameter from command line -->
<suiteXmlFile>${suiteXmlFile}</suiteXmlFile>
</suiteXmlFiles>
</configuration>
and as i said with testNG selecting with any tag needed. But i prefer to have very strict order.
inside testNG xml:
<!DOCTYPE suite SYSTEM "http://beust.com/testng/testng-1.0.dtd" >
<suite name="BVT_iOS" time-out="600000"> <!-- 1000x60x10 = 10min-->
<listeners>
<listener class-name="com.xxxx.base.RetryListener" />
<listener class-name="com.xxxx.base.TestListener" />
</listeners>
<parameter name="runDestination" value="Local"/>
<parameter name="devicePlatform" value="iOS"/>
<parameter name="osVersion" value="10.3"/>
<parameter name="appType" value="xxxxx"/>
<parameter name="appiumServer2_Port" value="4726"/> <!-- 4725 Android_1, 4726 Android_2, 4727 iOS-->
<parameter name="generateReport" value="true"/>
<!--
<parameter name="devicePlatform" value="android"/>
<parameter name="devicePlatform" value="android fullReset/>
<parameter name="runDestination" value="genymotion"/>
<parameter name="runDestination" value="Local"/>
<parameter name="deviceID" value="192.168.56.101:5555"/>
<parameter name="deviceName" value="Nexus4"/>
<parameter name="deviceName" value="phone_Nexus6_5.1.0_1440x2560"/>
<parameter name="deviceName" value="LGH8155e9892e6"/> = LG G4
<parameter name="osVersion" value="8.1"/>
-->
<test name="0 prepare phone, account and client" preserve-order="true">
<parameter name="devicePlatform" value="iOS fullReset"/>
<parameter name="deviceName" value="iPhone 6s"/> <!-- iPad Air iPhone 6s -->
<classes>
<class name="com.xxxxx.tests.ios.xxxxxxx">
<methods>
<include name="test_1"></include>
</methods>
</class>
<class name="com.xxxx.tests.ios.xxxxx">
<methods>
<include name="test_2"></include>
</methods>
</class>
</classes>
</test>
<test name="execute_tests_with_client_reset" preserve-order="true">
<parameter name="devicePlatform" value="iOS fastReset"/> <!-- fastReset -->
<parameter name="deviceName" value="iPhone 6s"/>
<classes>
<class name="com.xxxx.tests.ios.xxxxxx">
<methods>
<include name="test_1"></include>
<include name="test_2"></include>
</methods>
</class>
......
</classes>
</test>
<test name="execute_tests_with_no_client_reset" preserve-order="true">
<parameter name="devicePlatform" value="iOS"/>
<parameter name="deviceName" value="iPhone 6s"/>
<classes>
<class name="com.xxxx.tests.ios.xxxx">
<methods>
<include name="xxxx"></include>
<include name="xxxx"></include>
</methods>
</class>
</classes>
</test>
</suite>