如何在Android自动化测试中检测应用程序崩溃?

4

我使用Appium来自动化和测试移动应用程序。由于应用程序中的错误而导致应用程序崩溃的情况很常见,因此测试可能会失败。测试失败可能有许多原因,但由于应用程序崩溃而导致的失败应该被正确地识别并在测试报告中报告。我想知道是否有任何方法可以自动检测应用程序崩溃。

2个回答

3
使用Appium java-client,您可以使用android driver方法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

这种方法比解析adb logcat输出要好得多。 - cybergrind
当显示“应用程序已停止”对话框时,这种方法无法正常工作。 - Bohdan Kaminskyi

1
你可以编写一小段代码,连续(或间隔)地捕获设备的logcat。过滤与你的应用相关的logcat中的异常和失败关键字。如果检测到崩溃关键字,则可以将整个logcat的副本附加到测试报告中。如果你非常了解Java,这种策略实现起来不应该很复杂。

2
有这种实现的示例吗? - sandrstar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接