gpt4 book ai didi

java - 加载 native 库的单元测试 Java 类

转载 作者:IT老高 更新时间:2023-10-28 20:30:36 31 4
gpt4 key购买 nike

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

 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)

如何让它找到位于 src/main/libs 的 native .so 库的路径,以便进行单元测试而不会出错?

注意:在 src/main/libs 目录中,我还有 3 个子目录:armeabimipsx86。每一个都包含正确的 .so 文件。我正在使用非实验版本来构建 NDK 库。

我不想使用其他 3rd 方测试库,因为我所有其他“纯”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。我的类(class)现在可以在安卓设备或模拟器的帮助下进行正常测试。

关于java - 加载 native 库的单元测试 Java 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34802667/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com