Programing/Spring Boot

Scanner 테스트코드 작성하기 System.setIn()

딩코딩 2023. 7. 2. 00:58

계산기 프로그램에서 Scanner를 통해 값을 입력받는 부분을 테스트코드로 작성해보자.

package org.example;

import java.util.Scanner;

public class CalculationRequestReader {
    public String[] read() {

        Scanner scanner = new Scanner(System.in);
        System.out.println("Enter two number and an operator (e.g 1 + 2): ");
        String result = scanner.nextLine();
        return result.split(" ");
    }
}

 

테스트코드 작성

    @Test
    public void System_in으로_데이터를_읽어들일_수_있다(){
        CalculationRequestReader calculationRequestReader = new CalculationRequestReader();

        //when
        System.setIn(new ByteArrayInputStream("2 + 3".getBytes()));
        String[] result = calculationRequestReader.read();
        assertEquals("2",result[0]);
        assertEquals("+",result[1]);
        assertEquals("3",result[2]);
    }