Search code examples
javajunitapplication-shutdown

JUnit4 : Test a shutdown hook is called


I have a method which adds a shutdown hook. I need to test (via JUnit) that the code executed in the hook is called :

public void myMethod(){
    Runtime.getRuntime().addShutdownHook(new Thread() {

        @Override
        public void run() {
            ... code to test ...
        }
    });
}

How can I simulate a shutdown in my unit test ?


Solution

  • I don't think you'll be able to test that. Instead, just test that your code behaves correctly when invoked (by unit testing it separately). Then, trust that Java will invoke your code at the right time.

    I.e. extract your code into a separate class that extends Thread and test the behaviour by executing run() in a unit test.