Ошибка модульного тестирования Objectbox при использовании нескольких тестовых файлов и выполнении теста Gradle - PullRequest
0 голосов
/ 09 апреля 2019

Я пишу приложение для 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?

С уважением

Томас

...