我正在努力修复目前正在崩溃的JNI电话。努力成为一名优秀的TDD从业者,我已经创建了一个JUnit测试来复制这个问题,它确实令人钦佩。
然而,通过崩溃,JNI调用永远不会返回。是否可以编写报告JNI崩溃失败的JUnit测试?
答案 0 :(得分:3)
哎呀,如果你的JNI崩溃了JVM,那么从junit开始测试肯定会很困难。例如,你不能为SIGSEGV连接一个信号处理程序,JVM就会死掉。
如果是我,我会稍微更改一下并创建一个简单的Java类,其中Main调用崩溃的本机代码,在我的junit测试中,我将执行一个运行该运行的Java运行时的新实例使用Runtime #exec。
的包装器类然后,您可以等待结果进程完成并检查其返回代码 - 如果它不为零,则执行时出现问题。
答案 1 :(得分:2)
如果您使用的是junit 4,请尝试使用timeout参数:http://junit.sourceforge.net/javadoc/org/junit/Test.html,否则请执行以下操作:http://netbeans.org/kb/docs/java/junit-intro.html#Exercise_243