dimanche 20 décembre 2020

Junit - How to test main method that takes a user input and prints a result accordingly?

I have a calculator that takes input and prints result. For example: Input to scanner: 2+3+4= Prints: 9.00

I want to test this main method in Junit. This is how far I came so far(Operator is the class):

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.io.PrintStream;

import org.junit.Before;
import org.junit.jupiter.api.Test;

class MainTester {
    
    private final ByteArrayOutputStream resultByte = new ByteArrayOutputStream();
    private final PrintStream result = System.out;

    
    @Before
    public void setUp() {
        System.setOut(new PrintStream(resultByte));
    }
    
    @Test
    void test() {
        Operator operator = new Operator();
        
        String input = "2+3+4=";
        InputStream in = new ByteArrayInputStream(input.getBytes());
        System.setIn(in);
    
        String[] args = null;       
        System.out.println(operator.main(args));
        assertEquals("9.00", resultByte.toString());
       

    }
}

Aucun commentaire:

Enregistrer un commentaire