我需要确定在接收到kill信号时是否调用了类的特定方法。执行某些清理操作的方法在关闭钩子中调用。
我尝试使用EasyMock期望在执行一个启动此类的main方法的Process然后调用Process destroy方法作为测试操作的一部分时调用此方法,但不知何故此类的mock未连接到我启动的过程。
如何在收到关机信号时测试是否调用了类的方法?我想这样做而不必修改类的实现来测试类。
答案 0 :(得分:1)
JVM负责执行已向其注册的关闭挂钩。由于您不是JVM的开发人员,因此您必须相信它能够正确地执行此操作。所以你想测试你的关闭挂钩已经注册。你可以通过检查removeShutdownHook
的返回值来做到这一点。但是有一个实际的障碍:你可能不想在JUnit退出时运行你的关闭钩子,所以你不应该在单元测试的代码中注册一个关闭钩子。所以我认为你不能。
您可以做的最好的事情是单元测试关闭钩子使用的代码。