Вызов метода в другом классе с использованием TestNG в Java - PullRequest
0 голосов
/ 24 января 2019

Я использую TestNG и Java для автоматизации приложения для Android.

Мне трудно вызывать метод из одного класса в другой.

Вот код.

для 1 класса (Appium)

//public AndroidDriver<AndroidElement> driver;

    @BeforeSuite
    public static AndroidDriver<AndroidElement> capabilities() throws MalformedURLException {
        // TODO Auto-generated method stub

            DesiredCapabilities cap = new DesiredCapabilities();
            cap.setCapability(MobileCapabilityType.PLATFORM_NAME, MobilePlatform.ANDROID);
            cap.setCapability(MobileCapabilityType.DEVICE_NAME, "Android device");
            cap.setCapability(MobileCapabilityType.NEW_COMMAND_TIMEOUT, "100");
            cap.setCapability(AndroidMobileCapabilityType.APP_PACKAGE, "App Package");
            cap.setCapability(AndroidMobileCapabilityType.APP_ACTIVITY,"App Activity");
            cap.setCapability("autoGrantPermissions", true);
            cap.setCapability("autoAcceptAlerts", true);
            AndroidDriver<AndroidElement> driver=new AndroidDriver<AndroidElement>(new URL("http://127.0.0.1:4723/wd/hub"),cap);
            return driver;
        } 
}

Мне нужно вызвать метод capabilities() в другом классе .java, но я использую TestNG.

поэтому в @Test в новом классе мне нужен этот метод в драйвере переменной. Я не могу сделать это, расширив этот класс до нового. Есть другой способ?

Ответы [ 2 ]

0 голосов
/ 24 января 2019

Создайте класс как DriverUtility с помощью метода:

public class DriverUtility {

   public static AndroidDriver<AndroidElement> capabilities() {

В тесте вы можете вызвать его как:

public AndroidDriver<AndroidElement> driver = DriverUtility.capabilities();
0 голосов
/ 24 января 2019

В этом случае вы можете использовать многоуровневое наследование. Создайте один класс, в котором вы будете устанавливать возможности, и расширять этот класс из другого класса, где вы будете писать свой @BeforeSuite, а теперь расширять этот класс из ваших тестовых классов, и @BeforeSuite будет автоматически запускаться из всех тестовых классов.

Например:

    class CapabilitiesClass{
    public void setCapabilities(){
         //Set your capabilities here
          }
     }

    class BaseClass extends CapabilitiesClass{
    //Write your BeforeSuite here and call the parent class method
    @BeforeSuite
    public void setUp(){
        setCapabilities();
    }

    class TestClass extends BaseClass{
    //Write your @Test here
    }
...