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

3

我正在修复一个目前崩溃的JNI调用。为了成为一名好的TDD从业者,我创建了一个JUnit测试来复制这个问题,并且它成功地完成了这个任务。

然而,由于崩溃,JNI调用永远不会返回。是否可能编写一个在JNI崩溃时报告失败的JUnit测试?

2个回答

4

如果你的JNI导致JVM崩溃,那么从junit进行测试肯定会很困难。例如,你无法为SIGSEGV挂钩信号处理程序,JVM只会崩溃。

如果是我,我会做一些改变,创建一个简单的Java类,带有调用崩溃的本地代码的Main方法,然后在我的junit测试中,使用Runtime#exec执行一个运行该包装类的新Java运行时实例。

然后你可以等待生成的进程完成并检查它的返回码——如果返回码非零,则表示执行出现问题。


2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接