TestUtil 클래스를 따로 만들어서 Scanner를 생성한다.
출력은 화면출력으로 가는 스트림을 빼돌리면 된다.
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.PrintStream;
import java.util.Scanner;
public class TestUtil {
public static Scanner genScanner(String input) {
return new Scanner(new ByteArrayInputStream(input.getBytes()));
}
public static ByteArrayOutputStream setOutToByteArray() {
final ByteArrayOutputStream output = new ByteArrayOutputStream();
System.setOut(new PrintStream(output));
return output;
}
public static void clearSetOutToByteArray(ByteArrayOutputStream output) {
System.setOut(new PrintStream(output));
try {
output.close();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
직접 입력하고 출력된 결과를 눈으로 확인하는 것보다 훨씬 빠르고 효율적이다.
public class test{
@Test
public void 출력을_모니터에_하지_않고_문자열로_얻기() {
ByteArrayOutputStream output = TestUtil.setOutToByteArray();
System.out.print("안녕");
String rs = output.toString();
TestUtil.clearSetOutToByteArray(output);
}
@Test
public void 스캐너에_키보드가_아닌_문자열을_입력으로_설정() {
Scanner sc = TestUtil.genScanner("안녕");
String cmd = sc.nextLine().trim();
assertEquals("안녕", cmd);
}
}
텍스트 에디터를 직접 만드는 것은 시간이 오래걸린다. 미리 만들어진 라이브러리 중에 토스트ui를 이용하면 편리하게 마크다운 문법이 작성 가능한 에디터를 적용할 수 있다.
토스트 ui