samedi 16 janvier 2021

android fragment scenario crashes during snackbar creation

I've got android application. I'm writing test using fragment scenario to test my fragment. My test is simple and looks like this:

FragmentScenario.launchInContainer(ShoppingPlanningFragment.class);
...
onView(withId(R.id.buttonRemove)).perform(click());

So I'm clicking some button and when this button is clicked snackbar is make like this:

Snackbar snackbar = Snackbar.make(getActivity().findViewById(R.id.planning_mode_layout), msg, Snackbar.LENGTH_LONG);

But I'm getting following error:

androidx.test.espresso.PerformException: Error performing 'single click - At Coordinates: 809, 1949 and precision: 16, 16' on view 'with id is com.gitlab.robert.cebula.expirydate:id/buttonRemove'. at androidx.test.espresso.PerformException$Builder.build(PerformException.java:5) at androidx.test.espresso.base.DefaultFailureHandler.getUserFriendlyError(DefaultFailureHandler.java:25) at androidx.test.espresso.base.DefaultFailureHandler.handle(DefaultFailureHandler.java:36) at androidx.test.espresso.ViewInteraction.waitForAndHandleInteractionResults(ViewInteraction.java:106) at androidx.test.espresso.ViewInteraction.desugaredPerform(ViewInteraction.java:43) at androidx.test.espresso.ViewInteraction.perform(ViewInteraction.java:94) at com.example.expirydate.shoppingfragment.planningfragment.ShoppingPlanningFragmentTest.clickingRemove_shouldRemovePlanningItem(ShoppingPlanningFragmentTest.java:28) at java.lang.reflect.Method.invoke(Native Method) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) at org.junit.runners.ParentRunner.run(ParentRunner.java:363) at androidx.test.ext.junit.runners.AndroidJUnit4.run(AndroidJUnit4.java:154) at org.junit.runners.Suite.runChild(Suite.java:128) at org.junit.runners.Suite.runChild(Suite.java:27) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) at org.junit.runners.ParentRunner.run(ParentRunner.java:363) at org.junit.runner.JUnitCore.run(JUnitCore.java:137) at org.junit.runner.JUnitCore.run(JUnitCore.java:115) at androidx.test.internal.runner.TestExecutor.execute(TestExecutor.java:56) at androidx.test.runner.AndroidJUnitRunner.onStart(AndroidJUnitRunner.java:395) at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:2074) Caused by: android.view.InflateException: Binary XML file line #41: Binary XML file line #41: Error inflating class android.widget.Button Caused by: android.view.InflateException: Binary XML file line #41: Error inflating class android.widget.Button Caused by: java.lang.reflect.InvocationTargetException at java.lang.reflect.Constructor.newInstance0(Native Method) at java.lang.reflect.Constructor.newInstance(Constructor.java:334) at android.view.LayoutInflater.createView(LayoutInflater.java:647) at com.android.internal.policy.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:58) at android.view.LayoutInflater.onCreateView(LayoutInflater.java:720) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:788) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730) at android.view.LayoutInflater.rInflate(LayoutInflater.java:863) at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) at android.view.LayoutInflater.inflate(LayoutInflater.java:515) at android.view.LayoutInflater.inflate(LayoutInflater.java:423) at com.google.android.material.snackbar.Snackbar.make(Snackbar.java:165) at com.example.expirydate.shoppingfragment.planningfragment.ShoppingPlanningFragment.onRemoveButtonClicked(ShoppingPlanningFragment.java:106) at com.example.expirydate.shoppingfragment.planningfragment.ShoppingPlanningFragment.lambda$uAFpgVG-8MPel7g8tIF4mCnD_tU(Unknown Source:0) at com.example.expirydate.shoppingfragment.planningfragment.-$$Lambda$ShoppingPlanningFragment$uAFpgVG-8MPel7g8tIF4mCnD_tU.onClick(Unknown Source:2) at android.view.View.performClick(View.java:6256) at android.view.View$PerformClick.run(View.java:24701) at android.os.Handler.handleCallback(Handler.java:789) at android.os.Handler.dispatchMessage(Handler.java:98) at androidx.test.espresso.base.Interrogator.loopAndInterrogate(Interrogator.java:53) at androidx.test.espresso.base.UiControllerImpl.loopUntil(UiControllerImpl.java:155) at androidx.test.espresso.base.UiControllerImpl.loopUntil(UiControllerImpl.java:149) at androidx.test.espresso.base.UiControllerImpl.injectMotionEvent(UiControllerImpl.java:53) at androidx.test.espresso.action.MotionEvents.sendUp(MotionEvents.java:122) at androidx.test.espresso.action.MotionEvents.sendUp(MotionEvents.java:117) at androidx.test.espresso.action.Tap.sendSingleTap(Tap.java:27) at androidx.test.espresso.action.Tap.access$100(Tap.java:21) at androidx.test.espresso.action.Tap$1.sendTap(Tap.java:3) at androidx.test.espresso.action.GeneralClickAction.perform(GeneralClickAction.java:23) at androidx.test.espresso.ViewInteraction$SingleExecutionViewAction.perform(ViewInteraction.java:16) at androidx.test.espresso.ViewInteraction.doPerform(ViewInteraction.java:65) at androidx.test.espresso.ViewInteraction.access$100(ViewInteraction.java:15) at androidx.test.espresso.ViewInteraction$1.call(ViewInteraction.java:3) at androidx.test.espresso.ViewInteraction$1.call(ViewInteraction.java:2) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at android.os.Handler.handleCallback(Handler.java:789) at android.os.Handler.dispatchMessage(Handler.java:98) at android.os.Looper.loop(Looper.java:164) at android.app.ActivityThread.main(ActivityThread.java:6541) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767) Caused by: java.lang.UnsupportedOperationException: Failed to resolve attribute at index 5: TypedValue{t=0x2/d=0x7f0300ac a=-1} at android.content.res.TypedArray.getColorStateList(TypedArray.java:538) at android.widget.TextView.(TextView.java:1212) at android.widget.Button.(Button.java:172) at android.widget.Button.(Button.java:147) at android.widget.Button.(Button.java:123) ... 42 more

If I comment snackbar creation everything works as expected. What's the problem here and how could I resolve it?

Aucun commentaire:

Enregistrer un commentaire