我一直在研究Java测试框架,最后测试了一个执行很多Toast消息的android应用程序。
问题在于该框架除了ADB之外不使用任何其他东西,并且我不能使用任何额外的库。
所以有没有办法通过adb从应用程序中获取消息?
我不介意为此写数百行。
最佳答案
您可以从命令行使用adb shell uiautomator events
检查事件中的吐司消息。但是,在Java测试框架中,您可以创建一种代码重用方法,该方法运行此命令,并使用try块将其与要比较的字符串进行解析,例如:
try {
Process process = Runtime.getRuntime().exec("uiautomator events");
BufferedReader bufferedReader = new BufferedReader(
new InputStreamReader(process.getInputStream()));
StringBuilder log=new StringBuilder();
String toastMessage;
while ((toastMessage = bufferedReader.readLine()) != null) {
log.append(toastMessage).append("\n");
if (toastMessage.contains(myToastStringVar)) {
Log.i("ToastMessageMatcher", "" // <-- your info message);
} else {
Log.e("ToastMessageMatcher", "" // <-- your error message);
}
}
bufferedReader.close();
process.waitFor();
System.out.println(log.toString());
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
同样,这也可以直接存在于您的派生中。