2013-05-21 5 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

Если у меня нет лучшего решения, я проверю свой код так, как вы объяснили, и напишет еще один тест, который высмеивает метод добавления крюка, чтобы гарантировать, что он вызывается всякий раз, когда это должно быть. спасибо –

Смежные вопросы