設定單元測試
本節舉例說明如何設定單元測試,檢查應用程式是否與 互動 應符合預期。
步驟 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
裝置政策控制器範例 Test DPC 可以接收應用程式意見回饋 下載。
步驟 1:安裝測試 DPC
安裝最新版的測試 DPC 。接著,將測試 DPC 設為裝置設定:
adb shell dpm set-device-owner com.afwsamples.testdpc/.DeviceAdminReceiver
步驟 2:啟用應用程式意見回饋通知
在測試 DPC 的選單中,啟用「應用程式意見回饋通知」。
觸發設定按鍵應用程式狀態的事件。如果成功,「測試 DPC」就會顯示 從通知中獲得意見回饋: