这是我遇到的情况:
我为使用 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/