이 내 주요 방법이 JUnit 테스트를 실행junit 테스트에서`main()`이`timer '에 던져진 예외를 잡아 내지 않는 이유는 무엇입니까?
public static void main(String... args) throws ClassNotFoundException {
String[] classAndMethod = args[0].split("#");
if (helpCmd(args)) {
printHelpForTest(classAndMethod[1]);
System.exit(0);
}
Result result = runTest(classAndMethod);
exitIfTimeOutExceptionThrown(result);
System.exit(result.wasSuccessful() ? 0 : 1);
}
private static void exitIfTimeOutExceptionThrown(Result result) {
boolean isTimeOut = Iterables.filter(result.getFailures(), CodeBlockTimeOutException.class).iterator().hasNext();
if (isTimeOut)
{
System.exit(2);
}
}
:
@Test
public void sendSearchRequest() throws Exception {
...
setTimeOut();
...
}
private void setTimeOut() {
if (criticalBlockTimeOut != null) {
TimerTask timerTask = new TimerTask() {
@Override
public void run() {
throw new CodeBlockTimeOutException();
//thread.interrupt();
}
};
new Timer().schedule(timerTask, Long.parseLong(criticalBlockTimeOut));
}
}
난 내 코드가 CodeBlockTimeOutException
던져 볼 이유하지만 메인 결코 코드 2 종료?
어떻게하면 기본 스레드에서 잡힐 수 있습니까?
가능한 중복 (http://stackoverflow.com/questions/11448214/unable-to-catch-exception-from- [TimerTask를 스레드에서 예외를 잡을 수 없습니다] timertask-thread) – Petesh