1
我正在做測試驅動的開發,它要求我爲從用戶接收輸入的類編寫測試函數。由於控制檯輸入函數在測試期間停止輸入,我使用一個使用字符串的InputStream編寫測試。來自InputStream的掃描儀輸入
String str="3\n2\n1\n4\n";
InputStream is = new ByteArrayInputStream(str.getBytes());
assertTrue(app.RunApp(is));
這導致調用函數getChoice(InputStream i),該函數涉及來自Scanner的控制檯輸入。
public int getChoice(InputStream i) throws IOException {
Scanner s=new Scanner(i);
s.useDelimiter("\n");
String y= s.next();
int x=Integer.parseInt(y);
return x;
}
我希望上面的代碼將字符串中的數字一個接一個。但是,正在發生的事情是,它會正確使用第一個數字,然後,流的位置將直接導向流的末尾,從而導致NoSuchElementException。請幫忙!