사용자 입력을 위해 System.in에서 읽는 클래스에 대해 테스트를 실행하는 방법은 무엇입니까? 예를 들어Java에서 입력을 읽는 단위 테스트 클래스를 어떻게 만들 수 있습니까?
:
나는 어쩌면 메인 클래스를 서브 클래스와 getUserInput 다시 스크립트 답을 공급하는 overridding 생각했습니다private int getUserInput() {
Scanner scanner = new Scanner(System.in);
System.out.print("What's ya input? [1-3]: ");
return scanner.nextInt();
}
. 입력을 결정하기 위해 System.out을 읽어야 할 경우에는 작동하지 않습니다.
나는 몇 시간을 쓰레드를 보면서 보냈지 만 이것들을 사용하는 방법도 알지 못했다.
+1은 의존성 주입에 사용됩니다. 일단 이것을 이해하면 객체 디자인이 다르게 보입니다. –
전역 [주변] 상태를 읽는 것은 항상 나쁜 설계입니다. 많은 영향 중 하나는 테스트를 더 어렵게 만드는 것입니다./"주입"은 무의미한 용어입니다. 그것은 단지 그들이 사용되기로되어있는 방식으로 생성자를 사용하는 것입니다. 입력 객체에 대한 액세스 권한은 * 부여됩니다. –
@Tom : 나는 이것이 "의존성 주사"의 형태이기 때문에 "주입"이라고 말했습니다. 종속성을 생성자를 통해 전달하는 것을 포함하지 않는 다른 형태의 종속성 삽입이 있습니다. –