在 Espresso 测试期间发送模拟器控制台命令

Send emulator console commands during Espresso test

Google 解释了如何控制 Android 模拟器的许多参数,例如电池的当前电量、传感器输入等等:https://developer.android.com/studio/run/emulator-console.html

我想创建一个 Espresso 测试,在测试期间更改模拟器的这些参数,这可能吗?我知道有以下方法:

InstrumentationRegistry.getInstrumentation().uiAutomation
    .executeShellCommand("someShellCommand")

此方法可以在测试期间调用,但要更改模拟器的系统参数,我首先必须通过 telnet localhost 5554 登录,然后才能操作模拟器参数,例如:power capacity 30,这会将电池电量更改为 30%。我如何在 Espresso 测试期间执行此操作?

你可以试试

InstrumentationRegistry.getInstrumentation().getUiAutomation()
    .executeShellCommand("dumpsys battery set level 30");

更改电池电量。其他值或设置可能需要不同的命令。

注意:您有责任在完成阅读后关闭返回的文件描述符。