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

Android 在Espresso测试期间发送模拟器控制台命令,android,android-emulator,android-espresso,Android,Android Emulator,Android Espresso,谷歌在这里解释了如何控制Android仿真器的许多参数,如电池的当前电量、传感器输入等: 我想创建一个浓缩咖啡测试,在测试期间更改模拟器的这些参数,这可能吗?我知道有以下方法: InstrumentationRegistry.getInstrumentation().uiAutomation .executeShellCommand("someShellCommand") 此方法可以在测试期间调用,但要更改模拟器的系统参数,我首先必须通过telnet localhost 5554登录,

谷歌在这里解释了如何控制Android仿真器的许多参数,如电池的当前电量、传感器输入等:

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

InstrumentationRegistry.getInstrumentation().uiAutomation
    .executeShellCommand("someShellCommand")
此方法可以在测试期间调用,但要更改模拟器的系统参数,我首先必须通过
telnet localhost 5554
登录,然后才能操作模拟器参数,例如so:
power capacity 30
,这将电池的功率更改为30%。如何在浓缩咖啡测试中做到这一点?

你可以试试

InstrumentationRegistry.getInstrumentation().getUiAutomation()
    .executeShellCommand("dumpsys battery set level 30");
更改电池电量。其他值或设置可能需要不同的命令


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

如果有人正在使用此描述符,请确保对
executeShellCommand()
返回的对象调用
.close()
。否则后续测试将失败。从API 18开始,您似乎需要使用getter:
.getUiAutomation()