Java 如何在TestNG中实现方法的可重用性

Java 如何在TestNG中实现方法的可重用性,java,automated-tests,testng,appium-android,Java,Automated Tests,Testng,Appium Android,包com.testng.learn 导入java.net.MalformedURLException 导入java.net.URL 导入org.openqa.selenium.remote.DesiredCapabilities 导入org.testng.annotations.BeforeTest 导入org.testng.annotations.DataProvider 导入org.testng.annotations.Test 导入io.appium.java_client.MobileB

包com.testng.learn

导入java.net.MalformedURLException
导入java.net.URL

导入org.openqa.selenium.remote.DesiredCapabilities
导入org.testng.annotations.BeforeTest
导入org.testng.annotations.DataProvider
导入org.testng.annotations.Test

导入io.appium.java_client.MobileBy
导入io.appium.java_client.MobileElement
导入io.appium.java_client.android.AndroidDriver
导入io.appium.java_client.android.AndroidKeyCode

公共类优先{

AndroidDriver driver;<br/>
DesiredCapabilities caps;<br/>

@BeforeTest<br/>
public void DC() {<br/>
    try {<br/>
        // Set the Desired Capabilities<br/>
        caps = new DesiredCapabilities();<br/>
        caps.setCapability("deviceName", "My Phone");<br/>
        caps.setCapability("udid", "LGM70021d764e8"); // Give Device ID of your mobile phone<br/>
        caps.setCapability("platformName", "Android");<br/>
        caps.setCapability("platformVersion", "7.1.1");<br/>
        caps.setCapability("appPackage", "com.android.contacts");<br/>
        caps.setCapability("appActivity", "com.android.contacts.activities.DialtactsActivity");<br/>
        caps.setCapability("noReset", "true");<br/>
        driver = new AndroidDriver<MobileElement>(new URL("http://127.0.0.1:4723/wd/hub"), caps);<br/>
    } catch (MalformedURLException e) {<br/>
        // TODO Auto-generated catch block<br/>
        e.printStackTrace();<br/>
AndroidDriver;
所需的能力上限;
@测试前
公共无效DC(){
试试{
//设置所需的功能
caps=新的DesiredCapabilities();
caps.setCapability(“deviceName”、“我的手机”);
caps.setCapability(“udid”、“LGM70021d764e8”);//给出您手机的设备ID
caps.setCapability(“平台名”、“安卓”);
caps.setCapability(“平台版”、“7.1.1”);
caps.setCapability(“appPackage”、“com.android.contacts”);
caps.setCapability(“appActivity”、“com.android.contacts.activities.DialtactsActivity”);
caps.setCapability(“noReset”、“true”);
驱动程序=新的AndroidDriver(新的URL(“http://127.0.0.1:4723/wd/hub);
}捕获(格式错误){
//TODO自动生成的捕捉块
e、 printStackTrace();

}
}

@DataProvider()<br/>
public void scroll(String text) {<br/>
    try {<br/>
        System.out.println(text);<br/>
        driver.findElement(MobileBy.AndroidUIAutomator(
                "new UiScrollable(new UiSelector()).scrollIntoView(" + "new UiSelector().text(\"" + text + "\"));"))
                .click();<br/>

        Thread.sleep(5000);<br/>
    } catch (InterruptedException e) {<br/>
        // TODO Auto-generated catch block<br/>
        e.printStackTrace();<br/>
    }<br/>
}<br/>

@Test(priority = 0)<br/>
public void print() {<br/>
    try {<br/>

        String text = "Karthik";<br/>
        Thread.sleep(2000);<br/>
        driver.findElementByAccessibilityId("Contacts Tab 3 of 4").click();<br/>
        Thread.sleep(1000);<br/>

        First f1 = new First();<br/>
        f1.scroll(text);<br/>

        Thread.sleep(1000);<br/>
        driver.pressKeyCode(AndroidKeyCode.BACK);<br/>
        Thread.sleep(2000);<br/>
        driver.pressKeyCode(AndroidKeyCode.HOME);<br/>

    } catch (InterruptedException e) {<br/>
        // TODO Auto-generated catch block<br/>
        e.printStackTrace();<br/>
    }<br/>

}<br/>
@DataProvider()
公共无效滚动条(字符串文本){
试试{
System.out.println(文本);
驱动程序.findElement(MobileBy.AndroidUIAutomator( “新建UiScrollable(新建UiSelector()).scrollIntoView(“+”新建UiSelector().text(\”“+text+”\”);”) 。单击();
线程睡眠(5000);
}捕获(中断异常e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
}
@测试(优先级=0)
public void print(){
试试{
String text=“Karthik”;
线程睡眠(2000);
driver.findElementByAccessibilityId(“联系人选项卡3/4”)。单击();
线程睡眠(1000);
第一个f1=新的第一个();
f1.滚动(文本);
线程睡眠(1000);
driver.按KeyCode(AndroidKeyCode.BACK);
线程睡眠(2000);
driver.pressKeyCode(AndroidKeyCode.HOME);
}捕获(中断异常e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
}

}

根据您的代码,您错误地定义了
@DataProvider()
方法。您应该需要参考
TestNG Dataprovider
上的文章

请详细说明你的意见question@IshitaShah我想从“public void print()”调用“public void scroll(String text)”,但它首先抛出空指针异常错误,因为根据您的代码,您错误地定义了@DataProvider()方法。你们应该需要参考关于TestNG Dataprovider的文章。谢谢你们,我检查过了,正如你们说的,我现在工作很好。请接受答案,其他用户可能不会检查评论,读者大多是参考接受的答案。所以,若你们认为答案已经解决了你们的问题,请接受。
@DataProvider()<br/>
public void scroll(String text) {<br/>
    try {<br/>
        System.out.println(text);<br/>
        driver.findElement(MobileBy.AndroidUIAutomator(
                "new UiScrollable(new UiSelector()).scrollIntoView(" + "new UiSelector().text(\"" + text + "\"));"))
                .click();<br/>

        Thread.sleep(5000);<br/>
    } catch (InterruptedException e) {<br/>
        // TODO Auto-generated catch block<br/>
        e.printStackTrace();<br/>
    }<br/>
}<br/>

@Test(priority = 0)<br/>
public void print() {<br/>
    try {<br/>

        String text = "Karthik";<br/>
        Thread.sleep(2000);<br/>
        driver.findElementByAccessibilityId("Contacts Tab 3 of 4").click();<br/>
        Thread.sleep(1000);<br/>

        First f1 = new First();<br/>
        f1.scroll(text);<br/>

        Thread.sleep(1000);<br/>
        driver.pressKeyCode(AndroidKeyCode.BACK);<br/>
        Thread.sleep(2000);<br/>
        driver.pressKeyCode(AndroidKeyCode.HOME);<br/>

    } catch (InterruptedException e) {<br/>
        // TODO Auto-generated catch block<br/>
        e.printStackTrace();<br/>
    }<br/>

}<br/>