【问题标题】:Unit Testing JNI Calls单元测试 JNI 调用
【发布时间】:2014-04-24 11:54:09
【问题描述】:

我有一些 C++ 代码的 Android JNI 包装器。 C++ 代码有它自己的一组单元测试。
我想为 JNI 包装类编写 Java 单元测试。

有没有办法从桌面控制台对 Android JNI .so 包装器 API 进行单元测试,例如在 Windows 上?也许使用桌面 Java 框架但使用所有 Android SDK 调用?

【问题讨论】:

    标签: android unit-testing android-ndk java-native-interface jniwrapper


    【解决方案1】:

    由于调用native的类只是一个包装类,那么你可以对JNI层进行单元测试。如果这是您想要的,那么直接对您的 JNI 函数进行单元测试会有点困难。但是,您仍然可以将完成所有工作的 JNI 函数的“核心”放入单独的 .c 文件中。因此,基本上,您会将新类包含在 JNI 类中,并让该类完成所有工作。现在,您将拥有一个 .c 类,其中包含一组可以轻松进行单元测试的方法。

    希望有帮助!

    【讨论】:

    • 是的,这可能是一个很好的方法并且非常有效,但重要的是要注意不同的平台和 C 库的行为方式略有不同 - 例如,在 32 上可能会遇到不同的细微错误位 Android 系统,而不是为(通常)64 位开发主机构建 - 它不一定会捕捉到有关实现定义的行为的风险假设。
    • 正如我在问题中所说,C++ 代码已经拥有自己的单元测试,C++ API 的 C 包装器也是如此。我想要 UT 的是 JNI 代码,它通常具有平台特定的数据转换,无法真正移植或隔离到本机 C。
    猜你喜欢
    • 2012-03-06
    • 2018-08-06
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-25
    相关资源
    最近更新 更多