Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/210.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AndroidTest不使用测试应用程序_Android_Android Gradle Plugin_Android Testing - Fatal编程技术网

AndroidTest不使用测试应用程序

AndroidTest不使用测试应用程序,android,android-gradle-plugin,android-testing,Android,Android Gradle Plugin,Android Testing,嗨,当我在androidTest清单文件中重写应用程序时,我遇到了这样一个问题,它无法工作。这是我在androidTest文件夹中的AndroidManifest.xml文件: <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.

嗨,当我在androidTest清单文件中重写应用程序时,我遇到了这样一个问题,它无法工作。这是我在
androidTest
文件夹中的
AndroidManifest.xml
文件:

<?xml version="1.0" encoding="utf-8"?>
<manifest
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="ru.app"
    android:installLocation="auto">

  <application
      tools:replace="android:name"
      android:name=".app.ApplicationAndroidTest" />

</manifest>
<application
        android:name=".app.Application"
        android:allowBackup="true"
        android:hardwareAccelerated="true"
        android:icon="@drawable/icon"
        android:label="@string/app_name"
        android:largeHeap="true"
        android:theme="@style/Theme">
...
</application>
事实上,我调试了它,并从测试活动中的断点调用getApplication(),它返回
.app.Application
,而不是
ApplicationAndroidTest
实例


您知道为什么忽略androidTest中的android清单文件吗?

作为一种解决方法,我使用了自定义测试运行程序类:

public class UiTestsRunner extends AndroidJUnitRunner {

  @Override
  @NonNull
  public Application newApplication(@NonNull ClassLoader cl, @NonNull String className, @NonNull Context context)
          throws InstantiationException, IllegalAccessException, ClassNotFoundException {
    return Instrumentation.newApplication(ApplicationAndroidTest.class, context);
  }
}

对我来说没问题。希望它能帮助一些人。

在androidTest xml上更改应用程序类不会影响应用程序本身(已测试的应用程序),但会影响设备附带的用于启用测试的附加android测试apk。我不确定android测试apk应用程序(如果有的话)的确切含义是什么

无论如何,解决方案是可用的。

重要提示:定义自定义检测运行程序时,需要使用自定义运行程序运行测试,这可以在Android Studio上通过编辑测试运行的运行配置来完成,在选择测试的AndroidTests部分下,有“Specific instrumentation runner(可选)”选项。

我尝试过这种方法,但是androidTest中定义的清单值并没有被合并到最终清单中(也许这过去是有效的,但现在似乎不再有效)。另一种方法是使用测试清单创建“uiTest”风格,不过我建议创建一个定制的AndroidJUnitRunner。