AndroidTest不使用测试应用程序

时间:2016-04-29 10:20:14

标签: android android-gradle android-testing

嗨,我遇到了当我在androidTest清单文件中重写应用程序时,它不起作用。这是AndroidManifest.xml文件夹中的androidTest文件:

<?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>

这是来自AndroidManifest.xml文件夹的原始main的一部分:

<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清单文件会被忽略?

2 个答案:

答案 0 :(得分:4)

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

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

它对我来说很合适。希望它可以帮到某人。

答案 1 :(得分:0)

在androidTest xml上更改应用程序类不会影响应用程序本身(经过测试的应用程序),但是附加的android测试apk会发送到设备以启用测试。我不确定应用程序的确切含义,如果有任何android测试apk。

无论如何busylee解决方法是可用的解决方案 重要提示:在定义自定义检测运行器时,需要使用自定义运行器运行测试,可以通过编辑测试运行的运行配置在Android Studio上完成,在选择测试的AndroidTests部分下,有“特定检测运行器” (可选)'选项。