Skip to content

Espresso throws NoSuchMethodError when testing with AccessibilityChecks enabled #376

@itome

Description

@itome

Description

java.lang.NoSuchMethodError: com.google.android.apps.common.testing.accessibility.framework.integrations.espresso.AccessibilityValidator.checkAndReturnResults(Landroid/view/View;)Lcom/google/common/collect/ImmutableList;
	at androidx.test.espresso.accessibility.AccessibilityChecks$2.check(AccessibilityChecks.java:65)
	at androidx.test.espresso.action.ViewActions$1.perform(ViewActions.java:130)
	at androidx.test.espresso.ViewInteraction$SingleExecutionViewAction.perform(ViewInteraction.java:366)
	at androidx.test.espresso.ViewInteraction.doPerform(ViewInteraction.java:255)
	at androidx.test.espresso.ViewInteraction.access$100(ViewInteraction.java:65)
	at androidx.test.espresso.ViewInteraction$1.call(ViewInteraction.java:158)
	at androidx.test.espresso.ViewInteraction$1.call(ViewInteraction.java:155)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at android.os.Handler.handleCallback(Handler.java:873)
	at android.os.Handler.dispatchMessage(Handler.java:99)
	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.runOrQueueRunnable(Scheduler.java:359)
	at org.robolectric.util.Scheduler.postDelayed(Scheduler.java:163)
	at org.robolectric.util.Scheduler.postDelayed(Scheduler.java:152)
	at org.robolectric.shadows.ShadowLegacyMessageQueue.enqueueMessage(ShadowLegacyMessageQueue.java:142)
	at android.os.MessageQueue.enqueueMessage(MessageQueue.java)
	at android.os.Handler.enqueueMessage(Handler.java:745)
	at android.os.Handler.sendMessageAtTime(Handler.java:697)
	at android.os.Handler.sendMessageDelayed(Handler.java:667)
	at android.os.Handler.post(Handler.java:395)
	at androidx.test.espresso.base.BaseLayerModule$1.execute(BaseLayerModule.java:92)
	at androidx.test.espresso.ViewInteraction.postAsynchronouslyOnUiThread(ViewInteraction.java:312)
	at androidx.test.espresso.ViewInteraction.desugaredPerform(ViewInteraction.java:166)
	at androidx.test.espresso.ViewInteraction.perform(ViewInteraction.java:119)
	at jp.cldh.signin.ui.SignInFragmentTest$testStartTwitterSignIn$1.perform(SignInFragmentTest.kt:80)
	at jp.cldh.signin.ui.SignInFragmentTest$testStartTwitterSignIn$1.perform(SignInFragmentTest.kt:44)
	at androidx.fragment.app.testing.FragmentScenario$4.perform(FragmentScenario.java:423)
	at androidx.fragment.app.testing.FragmentScenario$4.perform(FragmentScenario.java:415)
	at androidx.test.core.app.ActivityScenario.lambda$onActivity$2$ActivityScenario(ActivityScenario.java:551)
	at androidx.test.core.app.ActivityScenario$$Lambda$4.run(Unknown Source)
	at androidx.test.core.app.ActivityScenario.onActivity(ActivityScenario.java:561)
	at androidx.fragment.app.testing.FragmentScenario.onFragment(FragmentScenario.java:414)
	at jp.cldh.signin.ui.SignInFragmentTest.testStartTwitterSignIn(SignInFragmentTest.kt:79)
	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.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
	at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
	at org.robolectric.RobolectricTestRunner$HelperTestRunner$1.evaluate(RobolectricTestRunner.java:546)
	at org.robolectric.internal.SandboxTestRunner$2.lambda$evaluate$0(SandboxTestRunner.java:252)
	at org.robolectric.internal.bytecode.Sandbox.lambda$runOnMainThread$0(Sandbox.java:89)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)

I think the cause of this error is mismatch of return value from AccessibilityValidator.checkAndReturnResults

  • actual java.util.List
  • expected by espresso com.google.common.collect.ImmutableList

Steps to Reproduce

Run espresso test with AccessibilityChecks.enable().setRunChecksFromRootView(true).

Expected Results

Run test with no error.

Actual Results

java.lang.NoSuchMethodError

AndroidX Test and Android OS Versions

espresso version = 3.2.0-beta01
androidx test version = 1.2.0-beta01

Link to a public git repo demonstrating the problem:

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions