Я пишу приложение для Android с использованием библиотеки Objectbox.В целях тестирования я следовал примерам локального модульного теста Android, как упомянуто в https://docs.objectbox.io/android/android-local-unit-tests.. Я распространял многократные тесты в нескольких тестовых файлах, каждый из которых расширяет класс 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
Мой BaseClass, в котором инициализируется Objectbox, выглядит следующим образом:
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?
С уважением
Томас