jeudi 30 avril 2015

why am i getting a StackOverflowException when testing a GridViewPager with Robolectric

i'm trying to add a test for the activity in the android wear implementation and getting a stack overflow exception.

the test:

@Test
public void testActivityInit() {
       Robolectric.buildActivity(CustomGridActivity.class).create().start().visible().get();
}

the exception:

java.lang.StackOverflowError at sun.misc.Unsafe.compareAndSwapInt(Native Method) at java.util.concurrent.locks.AbstractQueuedSynchronizer.compareAndSetState(AbstractQueuedSynchronizer.java:566) at java.util.concurrent.locks.ReentrantLock$Sync.nonfairTryAcquire(ReentrantLock.java:137) at java.util.concurrent.locks.ReentrantLock.tryLock(ReentrantLock.java:370) at java.util.concurrent.ConcurrentHashMap$Segment.put(ConcurrentHashMap.java:432) at java.util.concurrent.ConcurrentHashMap.putIfAbsent(ConcurrentHashMap.java:1150) at java.lang.ClassLoader.getClassLoadingLock(ClassLoader.java:464) at java.lang.ClassLoader.loadClass(ClassLoader.java:405) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) at java.lang.ClassLoader.loadClass(ClassLoader.java:358) at org.robolectric.internal.bytecode.ShadowWrangler.stripStackTrace(ShadowWrangler.java:331) at org.robolectric.internal.bytecode.RobolectricInternals.cleanStackTrace(RobolectricInternals.java:28) ... at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2560) at android.view.View.measure(View.java:17430) at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2001) at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1166) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1372) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1054) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5779) at org.robolectric.util.Scheduler$ScheduledRunnable.run(Scheduler.java:246) at org.robolectric.util.Scheduler.runOneTask(Scheduler.java:167) at org.robolectric.util.Scheduler.advanceTo(Scheduler.java:148) at org.robolectric.util.Scheduler.advanceToLastPostedRunnable(Scheduler.java:111) at org.robolectric.util.Scheduler.unPause(Scheduler.java:42) at org.robolectric.shadows.ShadowLooper.unPause(ShadowLooper.java:271) at org.robolectric.shadows.ShadowLooper.runPaused(ShadowLooper.java:311) at org.robolectric.shadows.ShadowViewGroup.addView(ShadowViewGroup.java:35) at android.view.ViewGroup.addView(ViewGroup.java) at android.view.ViewGroup.addView(ViewGroup.java:3709) at android.view.LayoutInflater.rInflate(LayoutInflater.java:810) at android.view.LayoutInflater.inflate(LayoutInflater.java:504) at android.view.LayoutInflater.inflate(LayoutInflater.java:414) at android.view.LayoutInflater.inflate(LayoutInflater.java:365) at android.support.wearable.view.WatchViewStub.inflate(WatchViewStub.java:179) at android.support.wearable.view.WatchViewStub.onMeasure(WatchViewStub.java:133) at android.view.View.measure(View.java:17430) at android.support.wearable.view.GridViewPager.measureChild(GridViewPager.java:1363) at android.support.wearable.view.GridViewPager.onMeasure(GridViewPager.java:1334) at android.view.View.measure(View.java:17430) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463) at android.widget.FrameLayout.onMeasure(FrameLayout.java:430) at android.view.View.measure(View.java:17430) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463) at com.android.internal.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:447) at android.view.View.measure(View.java:17430) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463) at android.widget.FrameLayout.onMeasure(FrameLayout.java:430) at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2560) at android.view.View.measure(View.java:17430) at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2001) at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1166) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1372) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1054) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5779)

i've found various reference projects that test android wear, so the basics do work. it seems like the exception is in how the GridViewPager is handled/implemented. has anyone else run in to anything like this or have a fix/workaround?

thanks.

Aucun commentaire:

Enregistrer un commentaire