在 Espresso 测试期间处理插页式广告的正确机制是什么?
两个 Activity 之间有插页式广告,我想编写一个跨越这两个 Activity 的 Espresso 测试。
有没有办法在 Espresso 测试期间关闭插页式广告以继续测试第二个 Activity ?
可以使用 Espresso-Intents 来完成吗?
或
UIAutomator 测试和 Espresso 的混合是解决这个问题的唯一方法吗?
最佳答案
将此库添加到您的 gradle 中:
androidTestCompile 'com.android.support.test.uiautomator:uiautomator-v18:2.1.3'
然后在显示广告后的 Espresso 测试中:
Thread.sleep(5000); // Necessary time you needed to show your ads, for example 5 seconds
// After that, press back button to go back
UiDevice mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());
mDevice.pressBack();
如果您的应用在低于 18 的 SDK 级别上运行,请使用此代码在您的测试目录
src/androidTest/
中创建另一个 AndroidManifest.xml 文件,以便您的测试将使用 minSdkVersion=18
(这是 UIAutomator 所需的 API 级别)运行:<?xml version="1.0" encoding="utf-8"?>
<manifest
package="com.monkingme.monkingme"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<uses-sdk
android:minSdkVersion="18"
tools:overrideLibrary="android.support.test.uiautomator.v18" />
</manifest>