2017-10-27 3 views
0

나는 시험에 다음 코드를 가지고 : JUnit 테스트에서 어떻게 사용자 입력을 시뮬레이트 할 수 있습니까?

public IGrid createIGrid() { 
    while(size < 0){ 
     userInput(); 
    } 
    GridArray gamefield= new GridArray(size); 
    return gamefield; 
} 

public void userInput(){ 
    System.out.println("Bitte geben Sie die größe des Grid an. Der Wert muss größer als 0 sein."); 
    int size = scanner.nextInt(); 
    if (size < 1) { 
     throw new ImpossibleValueForArrayException(); 
    } 
} 

지금 나는 그것을 테스트하려는. 내가 무엇을 할 수 있을지?

+0

글쎄, 거기에 스캐너가 있습니다. 새 스캐너 ("입력 할 문자열")를 만들 수 있습니다. , 그리고 그 토큰을 반환합니다. 그래서 당신이 원하는 입력으로'Scanner'를 만들고 그것을 삽입하십시오. –

답변

0

함수 호출을 시뮬레이트 할 수 있습니다.

public class Core { 
    private static HandleInput handleInput = new HandleInput(); 
    public static void main(String[] args) { 
     handleInput.getConsoleInt(); 
    } 

    @Test 
    public void test() { 
     handleInput.handleInput(74); // your testing number 
    } 
} 

그리고 입력 처리기에 대한

:

class HandleInput { 
    Scanner scanner = new Scanner(System.in); 
    public int getConsoleInt() { 
     return scanner.nextInt();   
    } 
    public void handleInput(int input) { 
     if (input < 1) { 
      throw new ImpossibleValueForArrayException(); 
     } 
    } 
} 

하지만 당신은 Robot.class 함께 할 수 ...하지만 매우 비용이 많이 드는 이잖아 ...

0
의 JUnit과 함께

사용 Mockito 프레임 워크, 그래서 scanner.nextInt()을 조롱하고 반환 할 기대 값을 정의 할 수 있습니다. Mockito에 익숙하지 않은 분은이 기사를 읽어 보시기 바랍니다. http://www.vogella.com/tutorials/Mockito/article.html