如何为崩溃的JNI调用编写JUnit测试?

时间:2011-06-14 13:58:26

标签: junit java-native-interface integration-testing

我正在努力修复目前正在崩溃的JNI电话。努力成为一名优秀的TDD从业者,我已经创建了一个JUnit测试来复制这个问题,它确实令人钦佩。

然而,通过崩溃,JNI调用永远不会返回。是否可以编写报告JNI崩溃失败的JUnit测试?

2 个答案:

答案 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