testing - 系统关闭时调用的 JUnit 测试方法

标签 testing methods junit call shutdown

我需要确定一个类的特定方法在收到终止信号时是否被调用。此方法执行一些清理操作,在关闭 Hook 中调用。

我尝试使用 EasyMock 期望在执行启动此类的主要方法的 Process 之后调用此方法,然后调用 Process destroy 方法作为测试操作的一部分,但不知何故此类的 mock 未连接到我启动的进程。

如何测试类的方法是否在收到关闭信号时被调用?我想这样做而不必为了测试类而修改类的实现。

最佳答案

JVM 负责执行已向其注册的关闭 Hook 。由于您不是 JVM 的开发人员,因此您必须相信它会正确地做到这一点。所以你会想测试你的关闭钩子(Hook)是否已经注册。您可以通过检查 removeShutdownHook 的返回值来做到这一点。但是有一个实际问题:您可能不想在 JUnit 退出时运行关闭 Hook ,因此您不应该在经过单元测试的代码中注册关闭 Hook 。所以我认为你做不到。

您能做的最好的事情就是对您的关闭 Hook 使用的代码进行单元测试。

关于testing - 系统关闭时调用的 JUnit 测试方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15605801/

相关文章:

angular - 如何在 angular 7 中测试这个 Observable 函数

android - 如何在执行仪器测试期间关闭任何系统对话框

php - 在 symfony 2 中使用 Codeception 验收测试

methods - 我可以使用敏捷开发方法单独开发我的应用程序吗?

java - 将对象从一个类移动到另一个类 (Java)

Jenkins 测试结果到 Zephyr

java - 为什么测试需要永远执行

java - 在Java中,如何创建一个在每个实例中方法都不同的类?

java - Hamcrest 平等 Collection

spring - 使用Spring和Jersey测试框架进行单元测试