2013-03-25 3 views
2

kill 신호를 수신 할 때 클래스의 특정 메소드가 호출되는지 여부를 판별해야합니다. 일부 정리 작업을 수행하는이 메서드는 종료 후크에서 호출됩니다.시스템 종료시 호출되는 JUnit 테스트 메소드

EasyMock을 사용하여이 클래스의 main 메소드를 시작한 프로세스를 실행 한 후이 메소드가 호출 된 다음 프로세스의 메소드 중 일부로 프로세스 삭제 메소드를 호출하지만이 클래스의 mock이 내가 시작하는 과정.

종료 신호를 받으면 클래스의 메서드가 호출되는지 어떻게 테스트 할 수 있습니까? 클래스를 테스트하기 위해 클래스의 구현을 수정하지 않고이 작업을 수행하고 싶습니다.

답변

1

JVM은 등록 된 시스템 종료 훅을 실행합니다. JVM의 개발자가 아니기 때문에 올바르게 작동하는지 신뢰해야합니다. 따라서 셧다운 훅이 등록되었는지 테스트하고 싶을 것이다. 반환 값 removeShutdownHook을 검사하여이를 수행 할 수 있습니다. 하지만 실용적인 문제가 있습니다. JUnit이 종료 될 때 종료 훅을 실행하고 싶지 않으므로 단위 테스트 코드에 종료 훅을 등록하지 않아야합니다. 그래서 나는 네가 할 수 있다고 생각하지 않는다.

당신이 할 수있는 최선의 방법은 장치가 종료 후크에 의해 사용 된 코드를 테스트하는 것입니다.

+1

응용 프로그램을 종료하는 테스트 관련 테스트 문제를 참조하십시오. http : //stackoverflow.com/questions/309396/java-how-to-test-methods-that-call-system-exit – Raedwald

관련 문제