Загрузка собственной библиотеки в тесте Android JUnit

Я создал собственную библиотеку, использующую ndk-build которую я могу загрузить и использовать в своем приложении для Android. Тем не менее, я хочу написать несколько тестов против этой части моего приложения.

При вызове функции native в моих тестах я получаю это сообщение об исключении:

 java.lang.UnsatisfiedLinkError: no process in java.library.path 

… где process – это моя собственная библиотека для импорта, называемая libprocess.so .

Я использую Roboelectric для своих тестов и запускаю этот конкретный с RobolectricTestRunner , если это имеет значение.

Как я могу заставить свой тестовый проект «видеть» родную библиотеку?


Изменить: я загружаю библиотеку в свое приложение так:

 static { System.loadLibrary("process"); } public static native int[] process(double[][] data); 

Process.process(array) отлично работает в приложении (библиотека загружается), но не выполняется при запуске из тестов с исключением, приведенным выше.


Изменить 2: если я установил -Djava.library.path="<the directory of libprocess.so>" в качестве аргумента VM, тогда:

 System.out.println(System.getProperty("java.library.path")); 

Показывает путь, который я установил, но я все равно получаю то же исключение. Я устанавливаю каталог как:

 <project-name>/libs/x86 

… но как абсолютный путь.

Solutions Collecting From Web of "Загрузка собственной библиотеки в тесте Android JUnit"

Я переключился на стиль тестирования по умолчанию (используя ActivityUnitTestCase вместо RoboElectric), и теперь он работает нормально. Жаль, что я должен пожертвовать скоростью тестирования, но запуск тестов на эмуляторе действительно работает. Вы также можете создать теневой класс для класса JNI, как описано здесь:

Robolectric tank на объектах Application, которые загружают библиотеки JNI. Могу ли я найти решение?

Возможно, скомпилирование библиотеки для моей машины сработало бы, но я не мог тратить на нее больше времени.