测试应用反馈

将应用更新为支持以键控应用状态的形式发送反馈后,您可以使用本页面上的指南设置单元测试并将测试反馈发送到测试设备政策控制器 (DPC)。

设置单元测试

本部分提供了如何设置单元测试以检查您的应用是否按预期与键控应用状态交互的示例。

第 1 步:设置您的类以接受 KeyedAppStatesReporter 作为参数

修改您的类以接受 KeyedAppStatesReporter 作为参数,而不是直接调用 create(),示例如下方的 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 Collection states = 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 发送测试反馈

一个名为 Test DPC 的示例设备政策控制器能够接收应用反馈,并可供下载。

第 1 步:安装测试 DPC

从 Play 商店安装最新版本的测试 DPC。接下来,将测试 DPC 设置为设备的管理员

adb shell dpm set-device-owner com.afwsamples.testdpc/.DeviceAdminReceiver

第 2 步:启用应用反馈通知

在测试 DPC 的菜单中,启用应用反馈通知

enable notifications

触发设置键控应用状态的事件。如果成功,测试 DPC 将在通知中显示反馈

feedback displayed