首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Robolectric测试ActiveAndroid

使用Robolectric测试ActiveAndroid
EN

Stack Overflow用户
提问于 2013-05-02 03:16:43
回答 1查看 1.7K关注 0票数 6

我该怎么做才能在Robolectric的ActiveAndroid的ContentProvider上获得一些测试覆盖率呢?这个简单的测试失败了。

模型:

代码语言:javascript
复制
@Table(name = "Things")
    public class Thing extends Model {
    public Thing() {
        super();
    }
}

测试:

代码语言:javascript
复制
@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));
  }
}

由此产生的堆栈跟踪:

代码语言:javascript
复制
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没有初始化。正常的应用程序执行工作正常。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-31 09:19:59

要在maven单元测试期间自动扫描ActiveAndroid模型,只需对ModelInfo.scanForModel进行简单的更改。

在该方法中,有一个"Robolectric回退“,它检测和扫描包含"bin”的路径。它处理Eclipse项目中的模型类。

Maven编译成目标/类。在ModelInfo中对扫描路径中的"classes“进行额外的检查可以做到这一点。

即将为此添加ActiveAndroid拉取请求。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16324822

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档