2013-05-21 15 views
9

Ich habe eine Methode, die einen Shutdown-Hook hinzugefügt. Ich brauche (über JUnit) zu testen, dass der Code in dem Haken ausgeführt wird genannt:JUnit4: Testen Sie einen Shutdown-Hook heißt

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

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

Wie kann ich einen Shutdown in meinem Unit-Test simulieren?

Antwort

6

Ich glaube nicht, dass Sie das testen können. Testen Sie stattdessen einfach, dass sich Ihr Code beim Aufruf korrekt verhält (indem Sie ihn separat testen). Dann vertrauen Sie darauf, dass Java Ihren Code zur richtigen Zeit aufruft.

I.e. Extrahieren Sie Ihren Code in eine separate Klasse, die Thread erweitert, und testen Sie das Verhalten, indem Sie run() in einem Komponententest ausführen.

+0

Wenn ich keine bessere Lösung habe, teste ich meinen Code so, wie Sie es erklärt haben, und schreibe einen weiteren Test, der die Methode anhört, indem er den Haken hinzufügt, um sicherzustellen, dass er immer aufgerufen wird. Vielen Dank –