嗨,我遇到了当我在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清单文件会被忽略?
答案 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部分下,有“特定检测运行器” (可选)'选项。