시그널 처리 테스트 코드 작성

public class SignalTest {

	private Signal receivedSignal;
	private Signal signal;
	
	private SignalHandler signalHandler = new SignalHandler() {
		@Override
		public void handle(Signal signal) {
			receivedSignal = signal;
		}
	};

	@Before
	public void setUp(){
		receivedSignal = null;
		signal = null;
	}
	
	@Test
	public void testRaise() throws InterruptedException{
		signal = new Signal("TERM");
		Signal.handle(signal, signalHandler);      
		Signal.raise(signal);
		Thread.sleep(1);
		assertEquals(signal.getName(), receivedSignal.getName());
	}
	
	@Test(expected=IllegalArgumentException.class)
	public void testBREAK(){
		signal = new Signal("BREAK"); 
		Signal.handle(signal, signalHandler); //Signal already used by VM: SIGBREAK
	}

	@Test(expected=IllegalArgumentException.class)
	public void testQUIT(){
		signal = new Signal("QUIT"); //Unknown signal: QUIT
	}
}
- 인터럽트 거는 부분은 어떻게 작성해야 하나?

- 테스트를 작성하면서 알아낸 사실
testRaise() 에서 시그널을 발생시켜도 바로 전달되지 않는다는 것을 알게 되었다.
sleep 을 하지 않으면 테스트가 실패할 경우도 생긴다.

테스트 작성의 순기능인가...ㅎㅎ