What steps will reproduce the problem?
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(RenamingDelegatingCo
ntext.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.ja
va: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:4
2)
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:2
28)
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
Original issue reported on code.google.com by thomas.r...@gmail.com on 1 May 2015 at 5:27
Original issue reported on code.google.com by
thomas.r...@gmail.com
on 1 May 2015 at 5:27Attachments: