【发布时间】:2015-07-11 17:20:10
【问题描述】:
我使用 Appium 来自动化和测试移动应用程序。很多情况下,应用程序会因为其中的错误而崩溃,然后测试失败。测试失败可能有多种原因,但应在测试报告中正确识别和报告由于应用程序崩溃而导致的失败。我想知道是否有任何方法可以自动检测应用程序崩溃。
【问题讨论】:
我使用 Appium 来自动化和测试移动应用程序。很多情况下,应用程序会因为其中的错误而崩溃,然后测试失败。测试失败可能有多种原因,但应在测试报告中正确识别和报告由于应用程序崩溃而导致的失败。我想知道是否有任何方法可以自动检测应用程序崩溃。
【问题讨论】:
使用 Appium java-client,你可以使用 android 驱动方法 currentActivity() 这会告诉您当前设备上最前面的活动。如果应用崩溃了,那么 currentActivity 将不会从您的应用返回任何活动。
此处为 Javadoc:http://appium.github.io/java-client/io/appium/java_client/android/AndroidDriver.html#currentActivity()
示例代码:
String activity = driver.currentActivity();
if (!activity.equals("com.myapp.myactivity")){
log("App crashed!");
}
您可以将此检查放在测试观察器中,当测试失败时该观察器会被调用。通过这种方式,您可以记录更多详细信息并突出显示潜在的崩溃。如果你使用的是 jUnit,你可以使用http://junit.org/apidocs/org/junit/rules/TestWatcher.html
【讨论】:
您可以编写一个小代码来连续(或每隔一段时间)从设备中捕获 logcat。过滤掉与您的应用相关的 logcat 中异常和失败的关键字。如果检测到 crash 关键字,那么您可以获取整个 logcat 的副本并将其附在您的测试报告中。如果你非常了解 Java,那么这个策略实现起来应该不会很复杂。
【讨论】: