如何检测 android 中的应用程序崩溃,当 运行 对它们进行自动化测试时?

How to detect an app crash in android when running Automated Tests against them?

我使用 Appium 来自动化和测试移动应用程序。在很多情况下,App 会因为其中的错误而崩溃,然后测试失败。测试失败可能有多种原因,但应在测试报告中正确识别和报告因应用程序崩溃而导致的失败。我想知道是否有任何方法可以自动检测应用程序崩溃。

您可以编写一个小代码来连续(或每隔一段时间)从设备中捕获 logcat。在与您的应用程序相关的 logcat 中过滤掉异常和失败的关键字。如果检测到 crash 关键字,那么您可以复制整个 logcat 并将其附在您的测试报告中。如果您 java 非常了解此策略,那么实施起来应该不会很复杂。

使用 Appium java-客户端,您可以使用 android 驱动程序方法 currentActivity() 这会告诉您 activity 当前在设备上最前面的内容。如果应用程序崩溃,则 currentActivity 将不会 return 来自您的应用程序的任何活动。

这里是 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