2013-05-21 167 views
9

我有一个方法,它添加了关机挂钩。我需要测试(通过JUnit的),在挂钩执行的代码被称为:JUnit4:测试关机挂钩被称为

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

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

我如何可以模拟我的单元测试关机?

回答

6

我不认为你能够测试。相反,只需测试您的代码在调用时的行为是否正确(通过单独测试它)。然后,相信Java会在适当的时候调用您的代码。

I.e.将您的代码提取到单独的类中,该类扩展了Thread并在单元测试中通过执行run()来测试行为。

+0

如果我没有更好的解决方案,我会按照你解释的方式来测试我的代码,并且会编写另一个测试来模拟添加钩子的方法,以确保它在任何时候都必须被调用。谢谢 –