How can I unit test a method that uses a Scanner and an InputStream?
下面是代码:
1 2 3 4 5 6 7 8 9 | public int foo(InputStream in) { int counter = 0; Scanner scanner = new Scanner(in); while(scanner.hasNextLine()) { counter++; scanner.nextLine(); } return counter; } |
通常我会将一个fileinputstream传递给这个方法,但是我希望能够在不访问物理文件的情况下测试它。
我应该嘲笑文件对象吗?如何实施
1 2 3 4 | @Test public void shouldReturnThree(){ } |
您可以像这样将测试字符串作为输入流传递到方法中(:
1 |
(不知羞耻地从这个答案中偷走了)
例如,此代码将打印3:
1 2 3 4 5 6 | String str =" "; InputStream stream = new ByteArrayInputStream(str.getBytes()); System.out.println(foo(stream)); |