我正在修复此刻崩溃的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