Fixed
Status Update
Comments
nk...@google.com <nk...@google.com> #2
Here's a really detailed StackOverflow answer that seems to point out some things to look at in relation to this behaviour:
http://stackoverflow.com/a/14293528/238753
nk...@google.com <nk...@google.com> #3
Thank you for your feedback. We assure you that we are doing our best to address the issue reported, however our product team has shifted work priority that doesn't include this issue. For now, we will be closing the issue as won't fix obsolete. If this issue currently still exists, we request that you log a new issue along with latest bug report here https://goo.gl/TbMiIO .
Description
1. Create a SQLiteOpenHelper implementation
2. Create a ContentProvider using it
3. Create a ProviderTestCase2 implementation to test the provider
4. Use AndroidJUnitRunner and JUnit4-style tests to run the test case
What is the expected output? What do you see instead?
The same test case works fine with JUnit3 and gives proper results (test passed/failed).
When configured for JUnit4, I get a java.lang.NullPointerException on the context passed to my SQLiteOpenHelper's constructor which is automatically called during ProviderTestCase2#setUp().
Full trace :
java.lang.NullPointerException
at android.test.RenamingDelegatingContext.openOrCreateDatabase(RenamingDelegatingContext.java:157)
at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:235)
at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:224)
at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:164)
at com.foobar.bbb.FooProvider.insert(FooProvider.java:41)
at android.content.ContentProvider$Transport.insert(ContentProvider.java:213)
at android.content.ContentResolver.insert(ContentResolver.java:914)
at com.foobar.bbb.FooProviderTestCase.testDummy(FooProviderTestCase.java:49)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:30)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
at org.junit.runners.ParentRunner.run(ParentRunner.java:300)
at org.junit.runners.Suite.runChild(Suite.java:128)
at org.junit.runners.Suite.runChild(Suite.java:24)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
at org.junit.runners.ParentRunner.run(ParentRunner.java:300)
at org.junit.runner.JUnitCore.run(JUnitCore.java:157)
at org.junit.runner.JUnitCore.run(JUnitCore.java:136)
at android.support.test.internal.runner.TestExecutor.execute(TestExecutor.java:54)
at android.support.test.runner.AndroidJUnitRunner.onStart(AndroidJUnitRunner.java:228)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1701)
What version of the product are you using? On what operating system?
com.android.support.test.espresso:espresso-core:2.1
Android Studio 1.2
JDK 1.8.0
Fedora 20
Please provide any additional information below.
I am joining a sample Android Studio project which reproduces the problem. To switch between Junit3/4 just comment/uncomment marked lines in FooProviderTestCase.java and app/build.gradle