使用 ObjectBox 进行单元测试

Unit Tests with ObjectBox

我刚开始在我的 Android 应用程序中使用 ObjectBox,对此我有一个简单的问题。该项目基于 Clean Architecture,其中我有一个存储库 class,它通过 DI (Dagger2) 在其构造函数中接收一个 BoxStore。在该构造函数中,像往常一样,我使用 boxStore.boxFor().

创建了一个 Box 实例

它工作得很好,但现在我需要测试这个存储库 class 并且...我遇到了一些我不知道如何解决的问题。

我的第一个尝试是用 Mockito 模拟 BoxStore,并将这个模拟传递给存储库的构造函数。它抛出 NullPoinerException。然后,我尝试使用以下代码创建本地 BoxStore:

@Before
public void before() {
    File tempFile = null;
    try {
        tempFile = File.createTempFile("object-store-test", "");
    } catch (IOException e) {
        e.printStackTrace();
    }

    tempFile.delete();
    boxStoreDir = tempFile;
    store = MyObjectBox.builder().directory(boxStoreDir).build();
    repository = new EstadoOrgaoLocalRepository(store);
}

但是,现在出现错误 java.lang.UnsatisfiedLinkError:java.library.path 中没有对象框。我不认为在每台开发人员机器上本地安装 ObjectBox 是一个不错的选择。

所以,我的简单问题是:如何对通过构造函数注入接收 BoxStore 实例的存储库 classes 进行单元测试?

您可以在本地(Windows、Linux、macOS)使用 ObjectBox 进行单元测试运行。

检查example repository