java - 如何从 jni 代码 junit 测试回调

标签 java android c++ junit android-ndk

这是我遇到的情况:

我为使用 C++ 库的 Android 应用程序编写了 Java 代码。所以 Java 代码使用 JNI 以便能够使用该库。 Java 代码调用 JNI 层中的方法来调用库方法。问题是这些方法没有为我进行的调用返回值,因为它是用于网络的东西,所以在 JNI 层中我异步接收一些事件,我通过使用回调将这些事件发送到 Java。 我的问题是,如何对这个功能进行 junit 测试?我的意思是,我如何测试我从 Java 调用 native 方法并在从 JNI 调用的回调中接收到预期结果? 我希望我已经正确地解释了自己,如果您有任何不明白的地方,请尽管问。

最佳答案

您可能可以将回调设置为您的 JUnit 类的一个函数,然后从您的 JUnit testSmth() 函数调用您的 API,然后等待某个锁直到回调发生。 在回调中,您通知锁定,因此您的 testSmth() 停止等待并继续进行并调用,比如说,success()。 您可以调用 lock.wait(timeout),因此如果超时到期,您可以从 testSmth()

调用 fail()

关于java - 如何从 jni 代码 junit 测试回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19890230/

相关文章:

c++ - 使用宏增加 C++ 代码的详细程度

c++ - 错误显式类型丢失 ('int assumed' )

java - 如何实现参数化运算

java - 哪些版本的相关技术适用于J2EE 1.4、5和6?

android - 一次可以调用多少hashMap操作 'safe'

android - 如何在 android 中对动画的 fps 进行基准测试?

c++ - 在 C++ 中读取 INI 文件

java - 使用 Feign 发布表单

java - 静态内部类如何访问外部类的所有静态数据成员和静态成员函数?

java - Android SQLite 试图更新一个字段