2013-11-10 4 views
1

это сценарий I've получил:как JUnit тест обратного вызова из JNI кода

I've написанного на Java код для андроид приложения, которое делает использование C++ библиотеки. Таким образом, Java-код использует JNI, чтобы иметь возможность использовать библиотеку. Код java вызывает вызовы методов на уровне JNI для вызова методов библиотеки. Дело в том, что эти методы не возвращают значения для вызовов, которые я создаю, потому что это для сетевого материала, поэтому на уровне JNI я получаю некоторые события асинхронно, которые я отправляю на Java с помощью обратных вызовов. Мой вопрос в том, как я могу проверить эту функциональность? Я имею в виду, как я могу проверить, что я делаю вызов собственных методов с Java, и получаю в обратном вызове, вызванном из JNI ожидаемые результаты? Надеюсь, я правильно объяснил, если вы ничего не понимаете, не стесняйтесь спрашивать.

ответ

1

Возможно, вы можете настроить обратный вызов как функцию вашего класса JUnit, а затем вызывать свой API из своей функции JUnit testSmth(), а затем ждать некоторую блокировку до тех пор, пока не произойдет обратный вызов. В обратном вызове вы уведомляете блокировку, и поэтому ваш testSmth() останавливается и продолжает дальше и звонит, скажем, success(). Вы можете позвонить по телефону lock.wait(timeout), так что если истекает время ожидания, вы вызываете fail() с вашего testSmth()

Смежные вопросы