在Java中使用TestNG在另一个类中调用方法

时间:2019-01-24 12:02:06

标签: java testng appium appium-android

我正在使用TestNG和Java来自动化android应用。

我很难从一个类调用方法到另一个类。

这是代码。

第1类(鸦片)

//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;
        } 
}

我需要在另一个.java类中调用capabilities()方法,但是我正在使用TestNG。

因此在新类的@Test中,我需要在变量驱动程序中使用此方法。我不能通过将此类扩展到新类来做到这一点。还有其他方法吗?

2 个答案:

答案 0 :(得分:0)

在这种情况下,您可以使用多级继承。创建一个可以设置功能的类,并从另一个类扩展该类,在该类中编写@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
    }

答案 1 :(得分:0)

使用以下方法将类创建为DriverUtility

public class DriverUtility {

   public static AndroidDriver<AndroidElement> capabilities() {

在您的测试中,将其称为:

public AndroidDriver<AndroidElement> driver = DriverUtility.capabilities();