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

问题描述

| 我正在修复目前崩溃的JNI调用。努力成为一名优秀的TDD实践者,我创建了一个JUnit测试来复制该问题,这一点令人钦佩。 但是,由于崩溃,JNI调用将永远不会返回。是否可以编写报告JNI崩溃失败的JUnit测试?     

解决方法

        哎呀,如果您的JNI使JVM崩溃,那么从junit进行测试肯定会很困难。例如,您不能为SIGSEGV挂接信号处理程序,而JVM即将消亡。 如果是我,我会稍作更改,并使用Main来创建一个简单的Java类,该类调用崩溃的本机代码,在我的junit测试中,我将执行一个Java运行时的新实例,该实例使用以下方法运行该包装类运行时#exec。 然后,您可以等待结果处理完成并检查其返回码-如果该返回码非零,则说明执行中存在问题。     ,        如果您使用的是junit 4,请尝试使用timeout参数:http://junit.sourceforge.net/javadoc/org/junit/Test.html,否则类似:http://netbeans.org/kb/docs/java/ junit-intro.html#Exercise_243     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...