我如何测试使用Scanner和InputStream的方法?

所以这里是代码:

public int foo(InputStream in) {
    int counter = 0;
    Scanner scanner = new Scanner(in);
    while(scanner.hasNextLine()) {
        counter++;
        scanner.nextLine();
    }
    return counter;
}

通常我会传递一个FileInputStream到这个方法,但是我希望能够在不访问物理文件的情况下测试它。

我应该嘲笑File对象吗? 如何实施

@Test
public void shouldReturnThree(){

}

你可以像这样将一个测试字符串作为InputStream传递给方法(:

InputStream stream = new ByteArrayInputStream(exampleString.getBytes());

(无耻地从这个答案中窃取)

例如,这段代码将打印3:

String str = "nnn";
InputStream stream = new ByteArrayInputStream(str.getBytes());
System.out.println(foo(stream));
链接地址: http://www.djcxy.com/p/78467.html

上一篇: How can I unit test a method that uses a Scanner and an InputStream?

下一篇: Make Scanner read a String in java