When I run my test I get this error:
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.app.Instrumentation.setInTouchMode(boolean)' on a null object reference
at android.test.ActivityInstrumentationTestCase2.getActivity(ActivityInstrumentationTestCase2.java:100)
at com.example.my_project.MyActivityTest.setup(MyActivityTest.java:46)
This is my code:
@RunWith(AndroidJUnit4.class)
public class MyActivityTest extends ActivityInstrumentationTestCase2<MyActivity> {
private MyActivity myActivity;
// ...
public MyActivityTest() {
super(MyActivity.class);
}
@Before
public void setup() throws Exception {
super.setUp();
setActivityInitialTouchMode(true);
myActivity = getActivity();
}
I have also tried replacing most of the above code with a test method like this:
@Test
public void testActivityNotNull() {
MyActivity myActivity = getActivity();
assertNotNull(myActivity);
}
but I get the same error. Why is this happening?
Finally figured it out. You need to add following line of code:
injectInstrumentation(InstrumentationRegistry.getInstrumentation());
before you call getActivity(). So in your case you would have setup method like this:
@Before
public void setUp() throws Exception {
super.setUp();
// Injecting the Instrumentation instance is required
// for your test to run with AndroidJUnitRunner.
injectInstrumentation(InstrumentationRegistry.getInstrumentation());
mMainActivity = getActivity();
}
Answer have been found in official docs: http://developer.android.com/tools/testing-support-library/index.html#AndroidJUnitRunner
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With