2013-03-25 72 views
2

我需要确定在接收到kill信号时是否调用某个类的特定方法。该方法执行一些清理操作,在关闭钩子中调用。在系统关闭时调用JUnit测试方法

我试过使用EasyMock来期望这个方法在执行一个Process之后被调用,该方法启动这个类的主要方法,然后调用Process destroy方法作为测试操作的一部分,但不知怎的,这个类的模拟没有连接到我启动的过程。

如何在接收到关闭信号时测试类的方法?我想这样做而不必修改类的实现来测试这个类。

回答

1

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

你可以做的最好的是单元测试你的关机钩使用的代码。

+1

看到退出应用程序的测试方法有点相关的问题:http://stackoverflow.com/questions/309396/java-how-to-test-methods-that-c​​all-system-exit – Raedwald 2013-05-25 12:20:03