AndroidTest不使用测试应用程序
嗨,当我在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
文件夹中的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。