2017-03-01 1 views

答えて

1

あなたは、シャットダウン・フックを登録することにより、ほぼすべて停止/停止のシナリオをカバーすることができます。

Runtime.getRuntime().addShutdownHook(new Thread() { 
    @Override 
    public void run() { 
     System.out.println("Gracefully shutting down the application/test"); 
    } 
}); 

誰かがkill -9を発行した場合、この信号は、オペレーティングシステムによって処理されますしかし、その後もないshutdownHookは、キャプチャしますプロセスを強制終了/中止します。

1

良い選択は、例えば次のように、カスタムJUnitのランナーの内側にシャットダウンフックを使用することです:

import org.junit.runners.BlockJUnit4ClassRunner; 
import org.junit.runners.model.InitializationError; 

public class MyRunner extends BlockJUnit4ClassRunner { 

    public MyRunner(Class<?> klass) throws InitializationError { 
     super(klass); 

     Runtime.getRuntime().addShutdownHook(new Thread("app-shutdown-hook") { 
      @Override 
      public void run() { 
       // Your code here 
       System.out.println("End of test"); 
      } 
     }); 
    } 

} 

その後、テストを実行するには、このランナーを使用します。

@RunWith(MyRunner.class) 
public class MyTest { 

    @Test 
    public void test() { 
     System.out.println("My test"); 
    } 

} 
関連する問題