问题描述
|
我正在修复目前崩溃的JNI调用。努力成为一名优秀的TDD实践者,我创建了一个JUnit测试来复制该问题,这一点令人钦佩。
但是,由于崩溃,JNI调用将永远不会返回。是否可以编写报告JNI崩溃失败的JUnit测试?
解决方法
哎呀,如果您的JNI使JVM崩溃,那么从junit进行测试肯定会很困难。例如,您不能为SIGSEGV挂接信号处理程序,而JVM即将消亡。
如果是我,我会稍作更改,并使用Main来创建一个简单的Java类,该类调用崩溃的本机代码,在我的junit测试中,我将执行一个Java运行时的新实例,该实例使用以下方法运行该包装类运行时#exec。
然后,您可以等待结果处理完成并检查其返回码-如果该返回码非零,则说明执行中存在问题。
, 如果您使用的是junit 4,请尝试使用timeout参数:http://junit.sourceforge.net/javadoc/org/junit/Test.html,否则类似:http://netbeans.org/kb/docs/java/ junit-intro.html#Exercise_243