使用multible测试文件和gradle测试执行时,Objectbox单元测试出错

时间:2019-04-09 16:53:31

标签: android unit-testing gradle objectbox

我正在使用Objectbox库编写一个Android应用程序。为了进行测试,我遵循了https://docs.objectbox.io/android/android-local-unit-tests中提到的“本地Android单元测试”示例。我将多个测试分散在多个测试文件中,每个测试文件都扩展了AbstractTestClass,在其中设置并再次关闭了对象框。

每个单独执行的TestClass都通过所有测试,但是当我使用gradle执行所有测试时,第二个Testclass执行失败并显示错误:

eu.haubisoft.faunamapper.ProjectTest > classMethod FAILED
    java.lang.LinkageError: Loading ObjectBox native library failed: vendor=Oracle Corporation,os=linux,arch=64,android=false,linux=true

Caused by:
    java.lang.UnsatisfiedLinkError: Native Library /mnt/data/Development/Projekte/FaunaMapper/app/libobjectbox-jni-linux-x64.so already loaded in another classloader

如错误所述,objectbox类似乎由其他东西加载。我的第一个建议是,gradle进行并行测试执行,因此我试图强制gradle在gradle.properties文件中增量执行测试:

org.gradle.parallel = false

其中初始化了Objectbox的My BaseClass如下:

public abstract class BaseBoxStoreTest {

    protected static File TEST_DIRECTORY;
    protected static BoxStore store;

    @BeforeClass
    public static void setUp() {
        store = MyObjectBox.builder()
            .directory(TEST_DIRECTORY)
            .debugFlags(DebugFlags.LOG_QUERIES | DebugFlags.LOG_QUERY_PARAMETERS)
            .build();
        }

    @AfterClass
    public static void tearDown() {
        if (store != null) {
            store.close();
            store = null;
        }
    }
}

有人知道在gradle任务中运行那些测试缺少什么吗?

最诚挚的问候

托马斯

0 个答案:

没有答案