如何对JNI源进行单元测试?

时间:2014-05-01 15:08:29

标签: java unit-testing java-native-interface

我正在寻找用于单元测试JNI源代码的工具或解决方案。到目前为止,我的搜索购物车还没有找到任何单元测试JNI代码的解决方案。

我的选项是在java中编写单元测试并进行本机调用,验证返回值。这里的问题是我无法获得代码覆盖率报告。对本机实现的调用需要由本机存根实现进行模拟或支持。

java测试代码(调用)---> DLL(JNI)中的本机实现---> Mocked / Stubbed C ++代码

如果有任何解决方案,请分享。

1 个答案:

答案 0 :(得分:1)

实际上没有任何全面的工具可用于自动构建和测试JNI代码。我尝试做的是创建一个独立的本机库,我可以使用像Automake这样的构建系统中的MinUnit进行单元测试。然后我使用我创建的一些名为JNITasks的自定义任务在Ant的Java代码之后编译我的实际JNI依赖代码,然后通过JUnit进行测试,就像测试任何其他Java类一样。

我认为通过JUnit获取本机代码的本机代码覆盖率报告是不可能的。我尝试通过仅处理将Java输入转换为本机库可以理解的内容(反之亦然)来保持JNI层尽可能薄。这应该使您的JUnit测试对于本机方法非常简单。所有复杂的本机测试都应该在编译后备库之后进行,独立于JUnit。您可以从您决定使用的本机测试框架中获取代码覆盖率报告。