是否可以在 uiautomator 中使用继承?如果是这样怎么办?

is it possible to use inheritance in uiautomator? if so how?

当我尝试实例化 testAYLogout() 和 运行 应用程序时,testAXEndTrip() 也 运行s。这是为什么?

public class ApplicationTest extends UiAutomatorTestCase {

    public void testAYLogout() throws RemoteException, UiObjectNotFoundException {
        //Get the device state
        UiDevice myDevice = getUiDevice();
        //menu button
        UiObject menuButton = new UiObject(new UiSelector().className(android.widget.ImageButton.class.getName()).index(0));
        //logout button
        UiObject logoutButton = new UiObject(new UiSelector().className(android.widget.CheckedTextView.class.getName()).text("Logout"));
        //yes button
        UiObject yesButton = new UiObject(new UiSelector().className(android.widget.Button.class.getName()).text("Yes"));
        //no button
        UiObject noButton = new UiObject(new UiSelector().className(android.widget.Button.class.getName()).text("No"));
        UiObject loginText = new UiObject(new UiSelector().className(android.widget.TextView.class.getName()).text("Login"));

        if (!myDevice.isScreenOn()) {
            myDevice.wakeUp();
        }

        //click menu button and wait for new window
        menuButton.clickAndWaitForNewWindow();
        assertTrue(logoutButton.exists());
        //click logout
        logoutButton.clickAndWaitForNewWindow();
        //click no
        noButton.clickAndWaitForNewWindow();
        menuButton.clickAndWaitForNewWindow();
        logoutButton.clickAndWaitForNewWindow();
        //click yes button
        yesButton.clickAndWaitForNewWindow();
        assertTrue(loginText.exists());

    }

public void testAXEndTrip() throws RemoteException, UiObjectNotFoundException {


        //get device
        UiDevice myDevice = getUiDevice();
        //pick up location feild
        UiObject okButton = new UiObject(new UiSelector().className(android.widget.Button.class.getName()).text("Ok").index(0));
        //end trip button
        UiObject endTripButton = new UiObject(new UiSelector().className(android.widget.Button.class.getName()).text("END TRIP").index(1));
        //no button
        UiObject noButton = new UiObject(new UiSelector().className(android.widget.Button.class.getName()).text("No"));
        //yes button
        UiObject yesButton = new UiObject(new UiSelector().className(android.widget.Button.class.getName()).text("Yes"));
        //submit button
        UiObject submitButton = new UiObject(new UiSelector().className(android.widget.Button.class.getName()).text("Submit"));
        //rate button
        UiObject rateButton = new UiObject(new UiSelector().className(android.widget.ImageButton.class.getName()).index(4));
        //feedback field
        UiObject feedback = new UiObject(new UiSelector().className(android.widget.EditText.class.getName()).index(1));
        //map
        UiObject map = new UiObject(new UiSelector().className(android.view.View.class.getName()).index(0));

        //wake up device if screen is off
        if (!myDevice.isScreenOn())
            myDevice.wakeUp();

        rateButton.waitForExists(5000);
        rateButton.clickAndWaitForNewWindow();
        feedback.setText("ride or die ma niguh");
        submitButton.clickAndWaitForNewWindow();
        assertTrue(map.exists());

    }

}

那么这是我的主要class

public class MainTest extends ApplicationTest{

    public static void TestMain() throws RemoteException, UiObjectNotFoundException {
        MainTest login = new MainTest();
        login.testAYLogout();

    }
}

你应该使用 Testing Support Library.

首先将 uiautomator 依赖项添加到您的 gradle 文件

dependencies {
    ...
    androidTestCompile 'com.android.support.test.uiautomator:uiautomator-v18:2.1.1'
}

然后,像这样创建一个测试用例class

@RunWith(AndroidJUnit4.class)
@SdkSuppress(minSdkVersion = 18)
public class MySampleTest extends MyAbstractTest {
   ...

   @Test
   public void myTest() {
       ...
   }

}

最后,运行 你的测试。确保将 AndroidJUnitRunner 指定为项目中的默认检测 运行ner。

android {
    defaultConfig {
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
}