如何对使用 Scanner 和 InputStream 的方法进行单元测试?
How can I unit test a method that uses a Scanner and an 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());
(无耻地偷自this answer)
例如,此代码将打印 3:
String str = "\n\n\n";
InputStream stream = new ByteArrayInputStream(str.getBytes());
System.out.println(foo(stream));
代码如下:
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());
(无耻地偷自this answer)
例如,此代码将打印 3:
String str = "\n\n\n";
InputStream stream = new ByteArrayInputStream(str.getBytes());
System.out.println(foo(stream));