【问题标题】:AndroidTest does not use test applicationAndroidTest 不使用测试应用程序
【发布时间】:2016-04-29 10:20:13
【问题描述】:

您好,当我在 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>

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

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

【问题讨论】:

    标签: android android-gradle-plugin android-testing


    【解决方案1】:

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

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

    对我来说它接缝没问题。希望它可以帮助某人。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 我尝试了这种方法,但是 androidTest 中定义的清单值没有被合并到最终清单中(也许这曾经有效,但似乎不再有效)。另一种方法是使用测试清单创建“uiTest”风格,但我建议创建自定义 AndroidJUnitRunner。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-12
      • 2012-02-10
      • 2013-04-11
      • 2015-10-09
      • 2016-08-03
      • 2015-12-10
      相关资源
      最近更新 更多