gpt4 book ai didi

android - 使用 Robolectric 测试 ActiveAndroid

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:05:17 24 4
gpt4 key购买 nike

我怎样做才能在 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)

应用上下文应该没问题。默认情况下,Robolectric 创建出现在 list 中的应用程序,在本例中为 com.activeandroid.Application。

所以,我很疑惑为什么Cache中的tableInfo没有初始化。正常的应用程序执行工作正常。

最佳答案

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

在那个方法中,有一个“Robolectric fallback”检测和扫描包含“bin”的路径。这会处理 Eclipse 项目中的模型类。

Maven 编译为目标/类。在 ModelInfo 中对扫描路径中的“类”进行额外检查就可以解决问题。

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

关于android - 使用 Robolectric 测试 ActiveAndroid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16324822/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com