设置单元测试
本部分提供有关如何设置单元测试以检查您的应用是否按预期与键控应用状态交互的示例。
步骤 1:设置您的类以接受 KeyedAppStatesReporter
作为参数
不要直接调用 create()
,而是修改您的类以接受 KeyedAppStatesReporter
作为参数,如下面的示例 BatteryManager
类所示Kotlin
class BatteryManager(val reporter:KeyedAppStatesReporter) { fun lowBattery(battery:Int) { reporter.setStatesImmediate( hashSetOf(KeyedAppState.builder() .setKey("battery") .setSeverity(KeyedAppState.SEVERITY_INFO) .setMessage("Battery is low") .setData(battery.toString()) .build())) } }
Java
public class BatteryManager { private final KeyedAppStatesReporter reporter; public BatteryManager(KeyedAppStatesReporter reporter) { this.reporter = reporter; } public void lowBattery(int battery) { final Collectionstates = new HashSet<>(); states.add(KeyedAppState.builder() .setKey("battery") .setSeverity(KeyedAppState.SEVERITY_INFO) .setMessage("Battery is low") .setData(Integer.toString(battery)) .build(); reporter.setStatesImmediate(states); } }
接下来,使用 KeyedAppStatesReporter.create
获取要传递的实例,无论在何处创建 BatteryManager
。
步骤 2:将企业反馈测试库添加到您的 build.gradle
文件中
将以下依赖项添加到您应用的 build.gradle
文件中
dependencies { testImplementation 'androidx.enterprise:enterprise-feedback-testing:1.0.0' }
步骤 3:创建一个 FakeKeyedAppStatesReporter
并将其传递到您的类中
Kotlin
val reporter = FakeKeyedAppStatesReporter(); val batteryManager = BatteryManager(reporter);
Java
FakeKeyedAppStatesReporter reporter = new FakeKeyedAppStatesReporter(); BatteryManager batteryManager = new BatteryManager(reporter);
步骤 4:断言与 FakeKeyedAppStatesReporter
的交互
例如,要检查是否已设置任何状态
Kotlin
assertThat(reporter.keyedAppStates).isEmpty();
Java
assertThat(reporter.getKeyedAppStates()).isEmpty();
或是否已请求上传特定状态
Kotlin
assertThat(reporter.uploadedKeyedAppStatesByKey["battery"]).isNotNull()
Java
assertThat(reporter.getUploadedKeyedAppStatesByKey().get("battery")).isNotNull();
将测试反馈发送到测试 DPC
一个名为测试 DPC 的示例 设备策略控制器 能够接收应用反馈,并且可以下载。
步骤 1:安装测试 DPC
从 Play 商店安装最新版本的 测试 DPC。接下来,将测试 DPC 设置为设备的管理员
adb shell dpm set-device-owner com.afwsamples.testdpc/.DeviceAdminReceiver
步骤 2:启用应用反馈通知
在测试 DPC 的菜单中,启用 **应用反馈通知**。
触发设置键控应用状态的事件。如果成功,测试 DPC 将在通知中显示反馈