What can I do to get some test coverage on ActiveAndroid's ContentProvider in Robolectric? This simple test fails.
The model:
@Table(name = "Things")
public class Thing extends Model {
public Thing() {
super();
}
}
The 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 ok. By default, Robolectric creates the application that appears in the manifest, which in this case is com.activeandroid.Application.
So, I'm puzzled why the tableInfo in Cache is not initialized. Normal application execution works fine.