【问题标题】:How to detect an app crash in android when running Automated Tests against them?对它们运行自动化测试时如何检测android中的应用程序崩溃?
【发布时间】:2015-07-11 17:20:10
【问题描述】:

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

【问题讨论】:

    标签: android appium crash


    【解决方案1】:

    使用 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

    【讨论】:

    • 这个方法比解析 adb logcat 输出要好很多
    • 当显示“应用程序已停止”对话框时,这将不起作用
    【解决方案2】:

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

    【讨论】:

    • 有这种实现的例子吗?
    猜你喜欢
    • 2017-10-18
    • 2019-07-29
    • 2015-04-04
    • 1970-01-01
    • 2015-12-17
    • 2021-09-17
    • 2016-02-23
    • 2023-01-21
    • 1970-01-01
    相关资源
    最近更新 更多