在使用Android Test进行测试时,会遇到一种场景,即需要测试的函数内部有一些判断条件,单纯的依赖于输入值和返回值的匹配无法完全覆盖函数功能。
以下将提供一个获取Android Log的类,该类通过对logcat命令进行封装,然后获取到Android输出的日志。
该类提供了两个函数接口,collect和clear。
collect函数使用Process类对logcat -b events -b system -b main -b crash 进行的封装,调用后获取输入流中写入的日志信息,然后将流中数据转换成字符串返回。详细实现代码如下所示:
public static String collect(long intervalTime) { if (intervalTime <= 0) { intervalTime = DEFAULT_INTERVAL_TIME; } StringBuilder sb = new StringBuilder(); InputStreamReader inputStreamReader = null; try { Date date = new Date(); date.setTime(System.currentTimeMillis() - intervalTime); String timeFormat = new SimpleDateFormat("YYYY-MM-dd HH:mm:ss.mmm").format(date); java.lang.Process logcatProcess = new ProcessBuilder("/system/bin/logcat", "-b", "events", "-b", "system"