2011-06-14 61 views
3

我正在修复此刻崩溃的JNI调用。为了成为一名优秀的TDD实践者,我创建了一个JUnit测试来复制这个问题,它的确令人赞叹。如何为崩溃的JNI调用编写JUnit测试?

但是,通过崩溃,JNI调用不会返回。是否有可能编写一个报告JNI崩溃失败的JUnit测试?

回答

3

哎哟,如果你的JNI崩溃的JVM,那么这肯定会很困难,从JUnit来测试。例如,你不能为SIGSEGV挂上一个信号处理程序,JVM就会死掉。

如果是我,我会改变这一点,并创建一个简单的Java类与Main调用崩溃本机代码,并在我的junit测试中,我会执行一个新的Java运行时实例运行使用Runtime#exec的包装类。

然后,您可以等待结果进程完成并检查其返回代码 - 如果它不为零,则执行时出现问题。