首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在C/C++中创建JNIEnv模拟

如何在C/C++中创建JNIEnv模拟
EN

Stack Overflow用户
提问于 2008-10-14 13:27:02
回答 3查看 3K关注 0票数 4

我正在用C编写一些JNI代码,希望使用cunit进行测试。为了调用JNI函数,我需要创建一个有效的JNIEnv结构。

有没有人知道有没有这样的模拟框架,或者谁能给我一些关于如何自己创建一个模拟JNIEnv结构的建议?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2008-10-14 23:49:15

H包含JNIEnv_的完整结构,包括“跳转表”JNINativeInterface_。您可以创建自己的JNINativeInterface_ (指向模拟实现)并从它实例化一个JNIEnv_。

回复评论的编辑:(我没有看你提到的另一个SO问题)

代码语言:javascript
复制
#include "jni.h"
#include <iostream>

jint JNICALL MockGetVersion(JNIEnv *)
{
  return 23;
}

JNINativeInterface_ jnini = {
  0, 0, 0, 0, //4 reserved pointers
  MockGetVersion
};

// class Foo { public static native void bar(); }
void Java_Foo_bar(JNIEnv* jni, jclass)
{
  std::cout << jni->GetVersion() << std::endl;
}

int main()
{
  JNIEnv_ myjni = {&jnini};
  Java_Foo_bar(&myjni, 0);
  return 0;
}
票数 3
EN

Stack Overflow用户

发布于 2008-10-14 14:48:31

嘲笑JNI对我来说听起来像是痛苦的世界。我认为您最好模拟用Java实现的调用,并使用Junit来测试Java端的功能

票数 1
EN

Stack Overflow用户

发布于 2017-02-25 09:08:15

引用:"jnimock是在gmock之上实现的,它提供了两个C++类'JNIEnvMock‘和'JavaVMMock’来分别模拟'JNIEnv‘和’JavaVM‘。“

https://github.com/ifokthenok/jnimock

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/201141

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档