我想使用Appium在我的Android应用中启动一些自动化测试 .

我在gradle文件中添加了这些依赖项:

compile 'io.appium:java-client:4.0.0'
androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.2'
androidTestCompile 'com.android.support:support-annotations:25.3.1'
androidTestCompile 'com.android.support.test:runner:0.5'
androidTestCompile 'com.android.support.test:rules:0.5'

并创建一个 Appium 类,我在其中定义 AndroidDriver 设置 DesiredCapabilities .

capabilities.setCapability(MobileCapabilityType.PLATFORM_NAME, MobilePlatform.ANDROID);
capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "Android Emulator");
capabilities.setCapability(MobileCapabilityType.APP, app.getAbsolutePath());

driver = new AndroidDriver(urlConnection.getURL(), capabilities);

我的第一个单元测试是首先创建驱动程序

@Before
public void setUp() throws MalformedURLException {
    try {
        Appium.connectAppium();
    } catch (Exception ex) {
        ex.printStackTrace();
    }
}

@Test
public void myTest() {
    if (Appium.getDriver() != null) {
        // Test
    }
}

第一个问题......

即使测试位于同一个Android项目中,我是否必须始终定义APK位置?我不能以某种方式使用包名/ activityName吗?

File app  = new File("D:\\Users\\myUser\\Documents\\Android\\android-project\\app\\build\\outputs\\apk\\app-debug.apk");
URL url = new URL ("http://127.0.0.1:4723/wd/hub");
URLConnection urlConnection = url.openConnection();

第二个问题......

在针对Appium Desktop(Appium v1.6.4)启动我的单元测试并使用Android Emulator时,我总是收到错误消息:

[ADB] Error: my.package/my.package.modules.startup.StartActivity or my.package.debug.modules.startup.StartActivity never started
at Object.wrappedLogger.errorAndThrow...