What can I do to get coverage for testing ActiveAndroid ContentProvider in Robolectric? This simple test fails.
Model:
@Table(name = "Things") public class Thing extends Model { public Thing() { super(); } }
Test:
@RunWith(RobolectricTestRunner.class) public class ContentProviderTest { @Test public void itShouldQuery() throws Exception { new Thing().save(); ContentResolver cr = new MainActivity().getContentResolver(); assertNotNull( cr.query(Uri.parse("content://org.example/things"), null, null, null, null)); } }
The resulting stack trace:
java.lang.NullPointerException: null at com.activeandroid.Cache.getTableInfo(Unknown Source) at com.activeandroid.Model.<init>(Unknown Source) at org.example.Thing.<init>(Thing.java:9) at org.example.ProviderTest.itShouldQuery(ProviderTest.java:25)
The application context should be in order. By default, Robolectric creates an application that appears in the manifest, which in this case is com.activeandroid.Application.
So, I am puzzled by why tableInfo in the cache is not initialized. Normal application execution works fine.
source share