2012-07-16 1 views
1
나는 Class에 대한 JUnit에서 테스트 케이스를 작성해야

에 Runtime.getRuntime.exit (값)에 전달되는 값을받는 방법 내부적으로 Runtime.getRuntime.exit(somevalue)를 호출 C1를 호출 할 수 있습니다.는 JUnit 테스트 케이스

클래스 C1 어떤 arguments을 받아들이는 main 방법을 가지고 있으며이 통과 arguments가 특정 작업을 수행에 따라 다음 CommandLine과를 만듭니다.

이제 실행 후 모든 작업은 Runtime.getRuntime.exit(somevalue)을 호출합니다. somevalue은 작업이 성공적으로 실행되었는지 (somevalue가 0인지의 여부) 또는 오류가 있는지 (somevalue가 1인지의 여부)를 정의합니다.

이 JUnit 테스트 케이스에서는이 값을 somevalue으로 가져와 원하는 somevalue인지 확인해야합니다.

JUnit 테스트 케이스에서 somevalue을 얻으려면 어떻게해야합니까?

+0

당신이 조롱 프레임 워크를 사용하고 있습니까? –

+0

간단한 JUnit 테스트 케이스 클래스. – JHS

답변

3

당신이 더 간결 것이다 조롱 프레임 워크를 사용하는 경우는, 종료 코드를 잡기 위해 보안 관리자를 재정의 할 수

@Test 
public void when_main_is_called_exit_code_should_be_1() throws Exception { 
    final int[] exitCode = new int[1]; 
    System.setSecurityManager(new SecurityManager() { 
     @Override 
     public void checkExit(int status) { 
      exitCode[0] = status; 
      throw new RuntimeException(); 
     }}); 

    try { main(); } catch(Exception e) {} 

    assertEquals(exitCode[0], 1); 
} 

public static void main() { 
    System.exit(1); 
}