Как я могу написать тест JUnit для вызова JNI, который падает? - PullRequest
3 голосов
/ 14 июня 2011

Я работаю над исправлением вызова JNI, который в данный момент падает.Стремясь быть хорошим практиком TDD, я создал тест JUnit, чтобы воспроизвести проблему, что он делает превосходно.

Однако при сбое вызов JNI никогда не возвращается.Можно ли написать тест JUnit, который сообщает о сбое при сбое JNI?

Ответы [ 2 ]

3 голосов
/ 17 июня 2011

Ой, если ваш JNI вызывает сбой JVM, то это будет непросто проверить с помощью junit.Вы не можете, например, подключить обработчик сигнала для SIGSEGV, JVM просто умрет.

Если бы это был я, я немного изменил бы это и создал бы простой класс Java сMain, вызывающий аварийный исходный код, и в моем тесте junit я выполняю новый экземпляр среды выполнения Java, который запускает этот класс-оболочку с помощью Runtime # exec.

Затем можно дождаться завершения результирующего процесса ипроверьте его код возврата - если он не равен нулю, возникла проблема при выполнении.

2 голосов
/ 16 июня 2011

попробуйте использовать параметр времени ожидания: http://junit.sourceforge.net/javadoc/org/junit/Test.html, если вы используете junit 4, в противном случае что-то вроде: http://netbeans.org/kb/docs/java/junit-intro.html#Exercise_243

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...