1

这是我得到的场景:

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

4

1 回答 1

1

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

于 2013-11-10T13:31:39.827 回答