我该怎么做才能在Robolectric的ActiveAndroid的ContentProvider上获得一些测试覆盖率呢?这个简单的测试失败了。
模型:
@Table(name = "Things")
public class Thing extends Model {
public Thing() {
super();
}
}测试:
@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));
}
}由此产生的堆栈跟踪:
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)应用程序上下文应该是ok的。默认情况下,Robolectric创建出现在清单中的应用程序,在本例中为com.activeandroid.Application。
所以,我不明白为什么缓存中的tableInfo没有初始化。正常的应用程序执行工作正常。
发布于 2013-05-31 09:19:59
要在maven单元测试期间自动扫描ActiveAndroid模型,只需对ModelInfo.scanForModel进行简单的更改。
在该方法中,有一个"Robolectric回退“,它检测和扫描包含"bin”的路径。它处理Eclipse项目中的模型类。
Maven编译成目标/类。在ModelInfo中对扫描路径中的"classes“进行额外的检查可以做到这一点。
即将为此添加ActiveAndroid拉取请求。
https://stackoverflow.com/questions/16324822
复制相似问题