Chargement d'une bibliothèque native dans un test Android JUnit

J'ai généré une bibliothèque native utilisant ndk-build dont je suis capable de charger et d'utiliser dans mon application Android. Cependant, je souhaite écrire des tests sur cette partie de mon application.

Lorsque j'appelle la fonction native dans mes tests, je reçois ce message d'exception:

  • Erreur de déclaration de crash de Firebase: l'application client com.xxxx est bloquée
  • Comment configurer TimePicker show with format 24h
  • On onResume () appelé avant onActivityResult ()?
  • RegisterContentObserver () sur le curseur SQLite brut
  • Android Studio File Explorer ne fonctionne pas sur Marshmallow (Nexus devices)
  • Comment envoyer de la valeur par intention après avoir terminé une activité
  •  java.lang.UnsatisfiedLinkError: no process in java.library.path 

    … où process est ma bibliothèque native à importer, nommé libprocess.so .

    J'utilise Robolectric pour mes tests, et je l'exécute avec le RobolectricTestRunner , s'il fait la différence.

    Comment puis-je obtenir mon projet de test pour «voir» la bibliothèque native?


    Edit: Je charge la bibliothèque dans mon application comme ça:

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

    L'appel Process.process(array) fonctionne bien dans l'application (la bibliothèque est chargée), mais échoue lors de l'exécution des tests avec l'exception donnée ci-dessus.


    Edit 2: Si j'ai configuré -Djava.library.path="<the directory of libprocess.so>" comme argument VM, alors:

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

    Montre le chemin que j'ai défini, mais j'ai toujours la même exception. Je définis le répertoire comme suit:

     <project-name>/libs/x86 

    … mais comme un chemin absolu.

  • La recherche par ordinateur ne fonctionne pas
  • Comment faire l'événement onClickListener () sur la barre d'action personnalisée
  • Le profil de FirebaseUser n'est pas mis à jour
  • La connexion SQLite a été filtrée bien que tout soit fermé
  • Comment puis-je régler la taille de l'aperçu de l'appareil photo en plein écran avec l'API Android?
  • Alternative appropriée à PopupMenu pour pré-Honeycomb
  • One Solution collect form web for “Chargement d'une bibliothèque native dans un test Android JUnit”

    J'ai changé le style de test par défaut (à l'aide de ActivityUnitTestCase au lieu de RoboElectric) et il fonctionne bien. C'est dommage que je dois sacrifier la vitesse du test en cours d'exécution, mais l'exécution des tests sur l'émulateur fonctionne réellement. Vous pouvez également créer une classe d'ombre pour la classe JNI, comme indiqué ici:

    Réservoirs robo-électriques sur les objets d'application qui chargent les bibliothèques JNI. Puis-je avoir une solution de contournement?

    Peut-être que la compilation de la bibliothèque pour ma machine aurait fonctionné, mais je ne pouvais plus passer plus de temps.

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.