Ich führe Komponententests in Android Studio. Ich habe eine Java-Klasse, die mit dem folgenden CodeKomponententest Java-Klasse, die native Bibliothek lädt
static
{
System.loadLibrary("mylibrary");
}
Aber wenn ich teste diese Klasse in meinem src/test
Verzeichnis eine native Bibliothek lädt I
java.lang.UnsatisfiedLinkError: no mylibrary in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1864)
at java.lang.Runtime.loadLibrary0(Runtime.java:870)
at java.lang.System.loadLibrary(System.java:1122)
bekommen Wie kann ich es den Weg der nativen finden machen .so Bibliotheken, die bei src/main/libs
befindet, um Test ohne Fehler zu testen?
Hinweis: innerhalb src/main/libs
Verzeichnis I 3 weitere Unterverzeichnisse: armeabi
, mips
und x86
. Jede dieser Dateien enthält die richtige .so-Datei. Ich verwende die nicht experimentelle Version für den Aufbau von NDK-Bibliotheken.
Ich möchte nicht andere Drittanbieter-Testbibliotheken verwenden, da alle meine anderen "reinen" Java-Klassen in der Einheit getestet werden können. Aber wenn das nicht möglich ist, bin ich offen für Alternativen.
Hier mein Testcode ist, die den Fehler wirft
@Test
public void testNativeClass() throws Exception
{
MyNativeJavaClass test = new MyNativeJavaClass("lalalal")
List<String> results = test.getResultsFromNativeMethodAndPutThemInArrayList();
assertEquals("There should be only three result", 3, results.size());
}
Ich bin ein wenig verwirrt - wie kann der obige Code diesen Fehler auslösen? – PhilLab
@PhilLab Dieser Code ist Teil einer Java-Klasse, die eine native Methode lädt, wie Sie sehen können. Es gibt kein Problem beim Ausführen meiner App. Dieser Fehler tritt jedoch beim Testen dieser Klasse im Android Studio – ThanosFisherman
auf, aber warum wird ein Fehler ausgelöst, wenn Sie ihn fangen? Sind Sie sicher, dass dies die Bibliothek ist, die nicht geladen werden kann oder haben Sie eine andere in Ihrem Projekt? – PhilLab