멀티 스레딩 시스템의 기능 테스트가 있습니다. 문제는 시스템이 System.exit을 사용하여 junit 테스트가이 오류를 포착하지 않는다는 것입니다. 그래서 다른 스레드에서도 System.exit이 호출 된 곳에서 테스트를 실패합니다.다른 스레드의 System.exit에서 JUnit 테스트가 실패합니다.
Java: How to test methods that call System.exit()?을 사용하여 System.exit에서 JVM 중지를 방지하고 대신 ExitException을 throw합니다. 또한이 예외를 수집하기 위해 http://blog.cedarsoft.com/2011/12/junit-rule-fail-tests-on-exceptionsfailed-assertions-in-other-threads/을 사용했습니다. ExitException 후 실패 할 경우 테스트를 중단하고 싶습니다. 그러나이 예외는 현재 스레드 만 중지합니다. ExitException을 throw하기 전에 junitThread.interrupt()를 호출하려고 시도했지만 간단한 테스트에서만 완벽하게 작동합니다.
스레드 작성 코드를 수정할 수없는 경우 어떻게하면 스레드에서 ExitException을 throw하여 junit 테스트를 중단 할 수 있습니까?
아마도 이것은 당신에게 도움이 될 수 있습니다 : http://stackoverflow.com/questions/309396/java-how-to-test-methods-that-call-system-exit –