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

如何为崩溃的JNI调用编写JUnit测试?,junit,java-native-interface,integration-testing,Junit,Java Native Interface,Integration Testing,我正在修复一个JNI电话,目前正在崩溃。为了成为一名优秀的TDD实践者,我创建了一个JUnit测试来复制这个问题,它做得非常好 然而,通过崩溃,JNI调用永远不会返回。有可能编写一个JUnit测试来报告JNI崩溃时的失败吗?尝试使用timeout参数:如果您使用的是JUnit 4,或者类似于:哎哟,如果您的JNI正在使JVM崩溃,那么从JUnit测试肯定会很困难。例如,您不能为SIGSEGV连接一个信号处理程序,JVM即将消亡 如果是我,我会稍微改变一下,创建一个简单的Java类,用一个Main

我正在修复一个JNI电话,目前正在崩溃。为了成为一名优秀的TDD实践者,我创建了一个JUnit测试来复制这个问题,它做得非常好


然而,通过崩溃,JNI调用永远不会返回。有可能编写一个JUnit测试来报告JNI崩溃时的失败吗?

尝试使用timeout参数:如果您使用的是JUnit 4,或者类似于:

哎哟,如果您的JNI正在使JVM崩溃,那么从JUnit测试肯定会很困难。例如,您不能为SIGSEGV连接一个信号处理程序,JVM即将消亡

如果是我,我会稍微改变一下,创建一个简单的Java类,用一个Main调用崩溃的本机代码,在junit测试中,我会执行一个Java运行时的新实例,该实例使用runtime#exec运行包装类

然后,您可以等待结果进程完成并检查其返回代码——如果返回代码为非零,则表示执行中存在问题