一尘不染

加载本机库的单元测试Java类

java

我正在Android Studio中运行单元测试。我有一个使用以下代码加载本机库的Java类

 static
    {
       System.loadLibrary("mylibrary");
    }

但是当我在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的目录我有3个子目录:armeabimipsx86。其中的每一个都包含正确的.so文件。我正在使用
非实验版本 来构建NDK库。

我不想使用其他第三方测试库,因为我所有其他“纯” 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());
    }

阅读 199

收藏
2020-12-03

共1个答案

一尘不染

我发现没有黑客的唯一解决方案是通过工具测试(androidTest目录)使用JUnit。现在可以在Android设备或仿真器的帮助下很好地测试我的班级。

2020-12-03