我正在修復此刻崩潰的JNI調用。爲了成爲一名優秀的TDD實踐者,我創建了一個JUnit測試來複制這個問題,它的確令人讚歎。如何爲崩潰的JNI調用編寫JUnit測試?
但是,通過崩潰,JNI調用不會返回。是否有可能編寫一個報告JNI崩潰失敗的JUnit測試?
我正在修復此刻崩潰的JNI調用。爲了成爲一名優秀的TDD實踐者,我創建了一個JUnit測試來複制這個問題,它的確令人讚歎。如何爲崩潰的JNI調用編寫JUnit測試?
但是,通過崩潰,JNI調用不會返回。是否有可能編寫一個報告JNI崩潰失敗的JUnit測試?
哎喲,如果你的JNI崩潰的JVM,那麼這肯定會很困難,從JUnit來測試。例如,你不能爲SIGSEGV掛上一個信號處理程序,JVM就會死掉。
如果是我,我會改變這一點,並創建一個簡單的Java類與Main調用崩潰本機代碼,並在我的junit測試中,我會執行一個新的Java運行時實例運行使用Runtime#exec的包裝類。
然後,您可以等待結果進程完成並檢查其返回代碼 - 如果它不爲零,則執行時出現問題。
嘗試使用超時參數:http://junit.sourceforge.net/javadoc/org/junit/Test.html如果你正在使用JUnit 4,否則這樣的:http://netbeans.org/kb/docs/java/junit-intro.html#Exercise_243