【问题标题】:How can I write a JUnit test for a JNI call that crashes?如何为崩溃的 JNI 调用编写 JUnit 测试?
【发布时间】:2011-06-14 13:58:25
【问题描述】:

我正在修复一个当前崩溃的 JNI 调用。为了成为一名优秀的 TDD 实践者,我创建了一个 JUnit 测试来复制该问题,结果令人钦佩。

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

【问题讨论】:

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


    【解决方案1】:

    哎呀,如果您的 JNI 使 JVM 崩溃,那么从 junit 测试肯定会很困难。例如,你不能为 SIGSEGV 连接一个信号处理程序,JVM 就会死掉。

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

    然后您可以等待生成的进程完成并检查其返回码 - 如果它不为零,则执行中有问题。

    【讨论】:

      【解决方案2】:

      尝试使用超时参数:http://junit.sourceforge.net/javadoc/org/junit/Test.html,如果您使用的是 junit 4,否则类似:http://netbeans.org/kb/docs/java/junit-intro.html#Exercise_243

      【讨论】:

        猜你喜欢
        • 2019-11-01
        • 2021-02-03
        • 2022-11-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-11-03
        • 1970-01-01
        相关资源
        最近更新 更多