I am working on pushing a project into espresso testing currently. I have read a bunch of documents and follow the given practises to get started.
Everything works f
Two Solutions:
As to why this is happening:
"Finally on an unrelated note, be careful when using the new IntentsTestRule. It does not initialize, Intents.init(), until after the activity is launched (afterActivityLaunched())." - Shameless plug to my own post (halfway down helpful visual)
I think you are running into a race condition where in your @Before method you are executing launchActivity() then espresso tries to execute intending(not(isInternal())).respondWith(new Instrumentation.ActivityResult(Activity.RESULT_OK, null));
before your activity is actually created, which means afterActivityLaunched()
isn't called, which means neither is Intents.init()
, crash!
Hope this helps.
IntentsTestRule
is derived from ActivityTestRule
and should manage Intents.init()
and Intents.release()
for you.
However, in my case the IntentsTestRule
did not work properly. So I switch back to ActivityTestRule
and call Intents.init()
before and Intents.release()
after the test which sent the Intent.
For more information please see this reference.