Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Robolectric和RecyclerView StackOverflow_Android_Android Recyclerview_Robolectric - Fatal编程技术网

Android Robolectric和RecyclerView StackOverflow

Android Robolectric和RecyclerView StackOverflow,android,android-recyclerview,robolectric,Android,Android Recyclerview,Robolectric,在我的单元测试中,我正在设置一个包含RecyclerView的活动。调用ActivityController.visible()时,我得到一个java.lang.StackOverflowerError。RecyclerView适配器的以下方法的第一行出现错误: @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(p

在我的单元测试中,我正在设置一个包含RecyclerView的活动。调用
ActivityController.visible()
时,我得到一个
java.lang.StackOverflowerError
。RecyclerView适配器的以下方法的第一行出现错误:

@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View view = LayoutInflater.from(parent.getContext())
            .inflate(R.layout.task_list_content, parent, false);

    System.out.println("CVH " + cont++);

    return new ViewHolder(view);
}
“CVH”行从未打印出来

在测试中,我以这种方式设置活动:

MainActivity activity = Robolectric.setupActivity(MainActivity.class);
请注意,我使用的是导航库,因此只有一个活动,而RecyclerView实际上位于片段中

我使用的是Robolectric版本4.3.1

这是堆栈跟踪,
之间的块重复随机次数(大约20次)


我也遇到了同样的问题,我解决了为测试添加@LooperMode(LooperMode.Mode.PAUSED)的问题

java.lang.StackOverflowError
  at java.base/java.lang.Throwable.getStackTrace(Throwable.java:820)
  at org.robolectric.internal.bytecode.ShadowWrangler.stripStackTrace(ShadowWrangler.java:352)
  at org.robolectric.internal.bytecode.RobolectricInternals.cleanStackTrace(RobolectricInternals.java:45)
  at android.view.ViewGroup.resolveRtlPropertiesIfNeeded(ViewGroup.java)
  at android.view.View.measure(View.java:24540)
  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6828)
  at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1552)
  at android.widget.LinearLayout.measureVertical(LinearLayout.java:842)
  at android.widget.LinearLayout.onMeasure(LinearLayout.java:721)
  at com.google.android.material.appbar.AppBarLayout.onMeasure(AppBarLayout.java:427)
  at android.view.View.measure(View.java:24545)
  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6828)
  at androidx.coordinatorlayout.widget.CoordinatorLayout.onMeasureChild(CoordinatorLayout.java:760)
  at com.google.android.material.appbar.AppBarLayout$BaseBehavior.onMeasureChild(AppBarLayout.java:1507)
  at com.google.android.material.appbar.AppBarLayout$Behavior.onMeasureChild(AppBarLayout.java:1196)
  at com.google.android.material.appbar.AppBarLayout$BaseBehavior.onMeasureChild(AppBarLayout.java:1215)
  .
  .
  .
  at androidx.coordinatorlayout.widget.CoordinatorLayout.onMeasure(CoordinatorLayout.java:831)
  at android.view.View.measure(View.java:24545)
  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6828)
  at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
  at androidx.appcompat.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:143)
  at android.view.View.measure(View.java:24545)
  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6828)
  at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1552)
  at android.widget.LinearLayout.measureVertical(LinearLayout.java:842)
  at android.widget.LinearLayout.onMeasure(LinearLayout.java:721)
  at android.view.View.measure(View.java:24545)
  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6828)
  at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
  at android.view.View.measure(View.java:24545)
  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6828)
  at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1552)
  at android.widget.LinearLayout.measureVertical(LinearLayout.java:842)
  at android.widget.LinearLayout.onMeasure(LinearLayout.java:721)
  at android.view.View.measure(View.java:24545)
  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6828)
  at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
  at com.android.internal.policy.DecorView.onMeasure(DecorView.java:742)
  at android.view.View.measure(View.java:24545)
  at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:3006)
  at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1833)
  at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2122)
  at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1721)
  at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7598)
  at android.os.Handler.handleCallback(Handler.java:883)
  at android.os.Handler.dispatchMessage(Handler.java:100)
  at org.robolectric.shadows.ShadowLegacyMessageQueue.dispatchMessage(ShadowLegacyMessageQueue.java:157)
  at org.robolectric.shadows.ShadowLegacyMessageQueue.access$200(ShadowLegacyMessageQueue.java:42)
  at org.robolectric.shadows.ShadowLegacyMessageQueue$1.run(ShadowLegacyMessageQueue.java:135)
  at org.robolectric.util.Scheduler$ScheduledRunnable.run(Scheduler.java:407)
  at org.robolectric.util.Scheduler.runOneTask(Scheduler.java:279)
  at org.robolectric.util.Scheduler.advanceTo(Scheduler.java:261)
  at org.robolectric.util.Scheduler.advanceBy(Scheduler.java:244)
  at org.robolectric.util.Scheduler.advanceBy(Scheduler.java:234)
  at org.robolectric.util.Scheduler.setIdleState(Scheduler.java:89)
  at org.robolectric.util.Scheduler.unPause(Scheduler.java:124)
  at org.robolectric.shadows.ShadowLegacyLooper.unPause(ShadowLegacyLooper.java:267)
  at org.robolectric.shadows.ShadowLegacyLooper.runPaused(ShadowLegacyLooper.java:324)
  at org.robolectric.shadows.ShadowViewGroup.addView(ShadowViewGroup.java:36)
  at android.view.ViewGroup.addView(ViewGroup.java)
  at android.view.ViewGroup.addView(ViewGroup.java:4907)
  at android.view.LayoutInflater.rInflate(LayoutInflater.java:1127)
  at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1084)
  at android.view.LayoutInflater.inflate(LayoutInflater.java:682)
  at android.view.LayoutInflater.inflate(LayoutInflater.java:534)
  at com.example.view.tasks.list.SimpleItemRecyclerViewAdapter.onCreateViewHolder(SimpleItemRecyclerViewAdapter.java:108)
  at com.example.view.tasks.list.SimpleItemRecyclerViewAdapter.onCreateViewHolder(SimpleItemRecyclerViewAdapter.java:35)
  at androidx.recyclerview.widget.RecyclerView$Adapter.createViewHolder(RecyclerView.java:7201)
  at androidx.recyclerview.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:6332)
  at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6216)
  at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6212)
  at androidx.recyclerview.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2314)
  at androidx.recyclerview.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1631)
  at androidx.recyclerview.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1591)
  at androidx.recyclerview.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:668)
  at androidx.recyclerview.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:4215)
  at androidx.recyclerview.widget.RecyclerView.onMeasure(RecyclerView.java:3615)
  at android.view.View.measure(View.java:24545)
  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6828)
  at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1552)
  at android.widget.LinearLayout.measureHorizontal(LinearLayout.java:1204)
  at android.widget.LinearLayout.onMeasure(LinearLayout.java:723)
  at android.view.View.measure(View.java:24545)
  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6828)
  at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
  at android.view.View.measure(View.java:24545)
  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6828)
  at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
  at android.view.View.measure(View.java:24545)
  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6828)
  at androidx.coordinatorlayout.widget.CoordinatorLayout.onMeasureChild(CoordinatorLayout.java:760)
  at com.google.android.material.appbar.HeaderScrollingViewBehavior.onMeasureChild(HeaderScrollingViewBehavior.java:99)
  at com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior.onMeasureChild(AppBarLayout.java:1996)
  .
  .
  .
  at androidx.coordinatorlayout.widget.CoordinatorLayout.onMeasure(CoordinatorLayout.java:831)
  at android.view.View.measure(View.java:24545)
  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6828)
  at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
  at androidx.appcompat.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:143)
  at android.view.View.measure(View.java:24545)
  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6828)
  at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1552)
  at android.widget.LinearLayout.measureVertical(LinearLayout.java:842)
  at android.widget.LinearLayout.onMeasure(LinearLayout.java:721)
  at android.view.View.measure(View.java:24545)
  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6828)
  at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
  at android.view.View.measure(View.java:24545)
  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6828)
  at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1552)
  at android.widget.LinearLayout.measureVertical(LinearLayout.java:842)
  at android.widget.LinearLayout.onMeasure(LinearLayout.java:721)
  at android.view.View.measure(View.java:24545)
  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6828)
  at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
  at com.android.internal.policy.DecorView.onMeasure(DecorView.java:742)
  at android.view.View.measure(View.java:24545)
  at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:3006)