如何在 C/C 中创建 JNIEnv 模拟
我正在用 C 编写一些 JNI 代码,我希望使用 cunit 进行测试。 为了调用 JNI 函数,我需要创建一个有效的 JNIEnv 结构。
有谁知道是否有用于此目的的模拟框架,或者谁可以给我一些关于如何自己创建模拟 JNIEnv 结构的指示?
I am writing some JNI code in C that I wish to test using cunit. In order to call the JNI functions, I need to create a valid JNIEnv struct.
Does anyone know if there is a mocking framework for such a purpose, or who can give me some pointers on how to create a mock JNIEnv struct myself?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
jni.h 包含 JNIEnv_ 的完整结构,包括“跳转表”JNINativeInterface_。 您可以创建自己的 JNINativeInterface_ (指向模拟实现)并从中实例化 JNIEnv_ 。
编辑回应评论:(我没有看你提到的其他问题)
jni.h contains the complete structure for JNIEnv_, including the "jump table" JNINativeInterface_. You could create your own JNINativeInterface_ (pointing to mock implementations) and instantiate a JNIEnv_ from it.
Edit in response to comments: (I didn't look at the other SO question you referenced)
对我来说,嘲笑 JNI 听起来像是一个痛苦的世界。 我认为你最好模拟 Java 中实现的调用,并使用 Junit 测试 java 端的功能
Mocking JNI sounds like a world of pain to me. I think you are likely to be better off mocking the calls implemented in Java, and using Junit to test the functionality on the java side
引用:“jnimock 是在 gmock 之上实现的。它提供了两个 C++ 类‘JNIEnvMock’和‘JavaVMMock’来分别模拟‘JNIEnv’和‘JavaVM’。”
https://github.com/ifokthenok/jnimock
Quote: "jnimock is implemented on top of gmock. It provides two C++ classes 'JNIEnvMock' and 'JavaVMMock' to separately mock 'JNIEnv' and 'JavaVM'."
https://github.com/ifokthenok/jnimock