我正在修复一个JNI调用,它现在崩溃了。为了成为一名优秀的测试驱动开发实践者,我创建了一个JUnit测试来复制这个问题,它做得很好。
但是,由于崩溃,JNI调用永远不会返回。可以编写一个JUnit测试来报告JNI崩溃的失败吗?
发布于 2011-06-17 04:56:46
如果您的JNI正在使JVM崩溃,那么从junit进行测试肯定会很困难。例如,你不能为SIGSEGV挂接一个信号处理程序,JVM就会死掉。
如果是我,我会稍微改变一下,创建一个简单的Java类,它有一个调用崩溃的本机代码的Main,在我的junit测试中,我将执行一个新的Java运行时实例,该实例使用Runtime#exec运行包装类。
然后,您可以等待结果进程完成,并检查其返回代码-如果返回码不为零,则说明执行中存在问题。
发布于 2011-06-16 05:50:08
如果您使用的是JUnit4,请尝试使用超时参数:http://junit.sourceforge.net/javadoc/org/junit/Test.html,否则使用类似于:http://netbeans.org/kb/docs/java/junit-intro.html#Exercise_243的参数
https://stackoverflow.com/questions/6344674
复制相似问题