2

kill シグナルを受信したときにクラスの特定のメソッドが呼び出されるかどうかを判断する必要があります。いくつかのクリーンアップ アクションを実行するこのメソッドは、シャットダウン フックで呼び出されます。

このクラスのメインメソッドを起動する Process を実行した後にこのメソッドが呼び出されることを期待して EasyMock を使用してみましたが、テストのアクションの一部として Process destroy メソッドを呼び出しますが、なぜかこのクラスのモックが起動したプロセスに接続されていません。 .

シャットダウン信号の受信時にクラスのメソッドが呼び出されることをテストするにはどうすればよいですか? クラスをテストするためにクラスの実装を変更することなく、これを行いたいと思います。

4

1 に答える 1

1

JVM は、登録されているシャットダウン フックの実行を担当します。あなたは JVM の開発者ではないので、それが正しく行われることを信頼する必要があります。そのため、シャットダウン フックが登録されていることをテストする必要があります。の戻り値を調べることでそれを行うことができますremoveShutdownHook。しかし、実際には問題があります。おそらく、JUnit の終了時にシャットダウン フックを実行したくないでしょう。そのため、単体テスト済みのコードにシャットダウン フックを登録しないでください。だから私はあなたができるとは思わない。

できる最善の方法は、シャットダウン フックで使用されるコードの単体テストです。

于 2013-05-25T12:14:42.403 に答える