Вот сценарий, который я получил:
Я написал код Java для приложения для Android, в котором используется библиотека c ++. Таким образом, код Java использует JNI, чтобы иметь возможность использовать библиотеку.
Код Java выполняет вызовы методов на уровне JNI для вызова методов библиотеки. Дело в том, что эти методы не возвращают значения для вызовов, которые я делаю, потому что это для сетевых вещей, поэтому на уровне JNI я получаю некоторые события асинхронно, которые я отправляю в Java с помощью обратных вызовов.
У меня вопрос, как я могу проверить эту функциональность? Я имею в виду, как я могу проверить, что я делаю нативный вызов методов из Java и получаю в обратном вызове, вызванном из JNI, ожидаемые результаты?
Я надеюсь, что я объяснил себя правильно, если вы ничего не понимаете, не стесняйтесь спрашивать.
Вы могли бы, вероятно, настроить обратный вызов как функцию вашего класса JUnit, а затем вызвать свой API из своего JUnit testSmth()
функции, затем подождите, пока не произойдет обратный вызов.
В обратном вызове вы уведомляете замок и поэтому ваш testSmth()
перестает ждать и продолжает дальше и звонит, скажем, success()
,
Ты можешь позвонить lock.wait(timeout)
так что если тайм-аут истекает, вы звоните fail()
от твоего testSmth()
Других решений пока нет …