【问题标题】:NPE inside robotium机器人内部的 NPE
【发布时间】:2014-05-07 13:36:08
【问题描述】:

我必须与一些不稳定的测试作斗争,并且遇到了一个我有时会遇到的异常情况

Caused by: java.lang.NullPointerException
at com.jayway.android.robotium.solo.ViewFetcher.getTopParent(ViewFetcher.java:44)
at com.jayway.android.robotium.solo.PublicViewFetcher.getTopParent(PublicViewFetcher.java:6)
at com.jayway.android.robotium.solo.ViewFetcher.getTopParent(ViewFetcher.java:46)
at com.jayway.android.robotium.solo.PublicViewFetcher.getTopParent(PublicViewFetcher.java:6)
at com.jayway.android.robotium.solo.ViewFetcher.getTopParent(ViewFetcher.java:46)
at com.jayway.android.robotium.solo.PublicViewFetcher.getTopParent(PublicViewFetcher.java:6)
at com.jayway.android.robotium.solo.ViewFetcher.getTopParent(ViewFetcher.java:46)
at com.jayway.android.robotium.solo.PublicViewFetcher.getTopParent(PublicViewFetcher.java:6)
at com.jayway.android.robotium.solo.ViewFetcher.getTopParent(ViewFetcher.java:46)
at com.jayway.android.robotium.solo.PublicViewFetcher.getTopParent(PublicViewFetcher.java:6)
at com.jayway.android.robotium.solo.ViewFetcher.getTopParent(ViewFetcher.java:46)
at com.jayway.android.robotium.solo.PublicViewFetcher.getTopParent(PublicViewFetcher.java:6)
at com.jayway.android.robotium.solo.ViewFetcher.getTopParent(ViewFetcher.java:46)
at com.jayway.android.robotium.solo.PublicViewFetcher.getTopParent(PublicViewFetcher.java:6)
at com.jayway.android.robotium.solo.ViewFetcher.getTopParent(ViewFetcher.java:46)
at com.jayway.android.robotium.solo.PublicViewFetcher.getTopParent(PublicViewFetcher.java:6)
at query.Query.rootViews(Query.java:113)
at query.Query.executeQuery(Query.java:29)

这是来自 robotium 的 getTopParent 方法:

/**
 * Returns the absolute top parent {@code View} in for a given {@code View}.
 *
 * @param view the {@code View} whose top parent is requested
 * @return the top parent {@code View}
 */

public View getTopParent(View view) {
    if (view.getParent() != null // line 44
            && view.getParent() instanceof android.view.View) {
        return getTopParent((View) view.getParent()); // line 46
    } else {
        return view;
    }
}

据我所知,这意味着 view.getParent() 在 null 检查和从视图到 null 的递归调用之间发生变化? 我可以想象向robotium发出拉取请求,将getTopParent更改为:

/**
 * Returns the absolute top parent {@code View} in for a given {@code View}.
 *
 * @param view the {@code View} whose top parent is requested
 * @return the top parent {@code View}
 */

public View getTopParent(View view) {
            final ViewParent parent = view.getParent();
    if (parent != null && parent instanceof android.view.View) {
        return getTopParent((View) parent);
    } else {
        return view;
    }
}

但在此之前我想多发表一些意见。

【问题讨论】:

    标签: android testing integration-testing robotium


    【解决方案1】:
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-25
    • 1970-01-01
    • 1970-01-01
    • 2021-07-11
    • 2021-06-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多