使用场景
android为我们提供了dump方法。注释中声明该方法会将活动的状态打印到给定流中,当cmd运行“adb shell dumpsys activity”时会调用此函数。所以当我们要做一些测试,就可以在activity重写dump函数编写我们的测试逻辑。
例如这样一个场景:用一个状态控制整个应用的功能是否可用,对于测试员来说她是无法从外部去控制状态值的,这时如果测试员能通过输入一串dump命令就能测试该功能会不会更加方便呢?
如何使用
就上述场景而言,对于开发来说,需要在activity重写dump方法,实现控制逻辑
// cmd执行 adb shell dumpsys activity com.xxx.xxx.activity.MainActivity state,就会执行以下代码
// 解释:com.xxx.xxx是应用包名,.activity.MainActivity是该activity的具体路径
private var mState = false //功能是否禁用
override fun dump(prefix: String, fd: FileDescriptor?, writer: PrintWriter, args: Array<out String>?) {
if (args.isNullOrEmpty()) {
return
}
when (args[0]) {
"state" -> mState = !mState
}
}
然后把cmd命令提供给测试就好了。该命令是adb命令,需要安装adb环境
其他
dump除了适用于activity以外,同样也适用于service和contentprovide。cmd唯一的区别是adb shell dumpsys activity …改为adb shell dumpsys activity service … 或者adb shell dumpsys activity service provider …