Yes , I sensed that , now i have changed the annotations to BeforSuite & AfterSuite.
@BeforeSuite
This is my complete BaseClass
public void setup() throws Exception {
Properties prop = new Properties();
InputStream input;
appiumService = AppiumDriverLocalService.buildDefaultService();
appiumService.start();
appiumServiceUrl=appiumService.getUrl().toString();
System.out.println("Appium server started at " +appiumServiceUrl);
//platform=prop.getProperty("platform");
try {
input = new FileInputStream("src/test/java/Utils/appiumSession.properties");
prop.load(input);
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("automationName", prop.getProperty("automationName"));
capabilities.setCapability("platformName", prop.getProperty("platformName"));
capabilities.setCapability("platformVersion", prop.getProperty("platformVersion"));
capabilities.setCapability("deviceName", prop.getProperty("deviceName"));
capabilities.setCapability("app", prop.getProperty("app"));
capabilities.setCapability("newCommandTimeout", "10");
/* Checking the platform */
platform = prop.getProperty("platform");
if (platform.equals("ANDROID")) {
driver = new AndroidDriver<>(new URL(appiumServiceUrl), capabilities);
} else if (platform.equals("IOS")) {
driver = new IOSDriver<>(new URL(appiumServiceUrl), capabilities);
driver.manage().timeouts().implicitlyWait(15,TimeUnit.SECONDS);
} else {
throw new Exception("Unable to read platform");
}
PageFactory.initElements(new AppiumFieldDecorator(driver, 5, TimeUnit.SECONDS), this);
} catch (IOException io) {
io.printStackTrace();
}
System.out.println("platform selected is " + driver);
}
@AfterSuite
public void tearDown () throws Exception {
driver.quit();
appiumService.stop();
}
}