这是我得到的情景:
我为使用c ++库的Android应用编写了Java代码。因此Java代码使用JNI以便能够使用该库。 java代码调用JNI层中的方法来调用库方法。问题是这些方法没有返回我正在进行的调用的值,导致它用于网络内容,因此在JNI层中我收到一些异步事件,我使用回调发送给Java。 我的问题是,我怎样才能对此功能进行junit测试?我的意思是,我如何测试我是否从Java执行本机方法调用,并且在从JNI调用的回调中收到预期的结果? 我希望我能够正确地解释自己,如果你不明白任何事情,请不要犹豫。
答案 0 :(得分:1)
您可以将回调设置为JUnit类的函数,然后从JUnit testSmth()
函数调用API,然后等待一些锁定,直到回调发生。
在回调中,您通知了锁定,因此testSmth()
停止等待并继续前进并拨打电话,例如success()
。
您可以致电lock.wait(timeout)
,如果超时到期,请从fail()
testSmth()