我正在Android Studio中运行单元测试。我有一个使用以下代码加载本机库的Java类
static { System.loadLibrary("mylibrary"); }
但是当我在src/test目录中测试此类时,我得到
src/test
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)
我如何才能找到位于本地的.so库的路径,src/main/libs以便进行无误的单元测试?
src/main/libs
注:里面src/main/libs的目录我有3个子目录:armeabi,mips和x86。其中的每一个都包含正确的.so文件。我正在使用 非实验版本 来构建NDK库。
armeabi
mips
x86
我不想使用其他第三方测试库,因为我所有其他“纯” java类都可以进行单元测试。但是,如果那不可能,那么我愿意接受替代方案。
这是我的测试代码,引发错误
@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()); }
我发现没有黑客的唯一解决方案是通过工具测试(androidTest目录)使用JUnit。现在可以在Android设备或仿真器的帮助下很好地测试我的班级。