如何使用Roboelectric在Realm Db中运行单元测试

时间:2016-04-19 10:10:15

标签: realm robolectric

我编写了一个用于测试Realm db的简单测试用例。但我总是收到错误

java.lang.UnsatisfiedLinkError: Can't load library: /tmp/android-tmp-robolectric4167396756480823821/app_lib/librealm-jni.so

这是我的测试

import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import io.realm.Realm;

@RunWith(RobolectricTestRunner.class)
public class RealmTest {

@Test
public void realmShouldWork() {
    Realm realm = Realm.getInstance(RuntimeEnvironment.application.getApplicationContext());
 }
}

我正在Application类中设置Realm配置。在正常运行模式下,它工作正常。问题仅在测试模式下。我无法在测试模式下初始化Realm数据库实例。

2 个答案:

答案 0 :(得分:1)

Realm还不支持Robolectric:https://github.com/realm/realm-java/issues/904

但是,如果您想要使用Robolectric来固定Realm,您可以在我们的单元测试示例中看到:https://github.com/realm/realm-java/tree/master/examples/unitTestExample

答案 1 :(得分:1)

在负面投票抱怨之前没有代码可以解决您的问题或者没有足够的信息以防有一天链接消失,我写了一个库来支持使用PowerMockito测试Realm。请参阅图书馆,因为它可以帮助您进行测试https://github.com/juanmendez/Mocking-Realm。当你去wiki时,你会发现如何使用它进行简单测试或使用Robolectric。它是用Realm 3.0测试的,但你可以使用它与最新版本,除非有很大的改变,你可以告诉我。感谢。