我正在使用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任务中运行那些测试缺少什么吗?
最诚挚的问候
托马斯