我發現真的很難爲此方法編寫單元測試,它基本上在用戶鍵入退出命令時退出程序。Java編寫單元測試用於在控制檯中退出用戶類型時退出程序
SytemExit類:
public class SystemExit {
public void exit(int status) {
System.exit(status);
}
}
我的靜態方法:
public static void exitWhenQuitDetected() {
final SystemExit systemExit = new SystemExit();
final String QUIT = "quit";
String line = "";
try {
final InputStreamReader input = new InputStreamReader(System.in);
final BufferedReader in = new BufferedReader(input);
while (!(line.equals(QUIT))) {
line = in.readLine();
if (line.equals(QUIT)) {
System.out.println("You are now quiting the program");
systemExit.exit(1);
}
}
} catch (Exception e) {
System.err.println("Error: " + e.getMessage());
}
}
東西是不完全正確這裏,因爲我很努力的單元測試方法exitWhenQuitDetected(我用的Mockito的嘲諷)。如何嘲笑InputStreamReader並驗證SystemExit.exit方法在看到退出時被調用?你可以在這個燈上點亮一些燈嗎?謝謝。
添加了我目前正在進行的測試,它不起作用。
@Test
@Ignore
public void shouldExitProgramWhenTypeQuit() {
String quit = "quit";
SystemExit systemExit = mock(SystemExit.class);
try {
BufferedReader bufferedReader = mock(BufferedReader.class);
when(bufferedReader.readLine()).thenReturn(quit + "\n");
SomeClass.exitWhenQuitDetected();
verify(systemExit, times(1)).exit(1);
} catch (IOException e) {
e.printStackTrace();
}
}
請添加您的Mockito代碼。 – 2012-09-02 08:45:24
這正是我所要求的,我正在努力想出這個測試。 –
歡迎來到Stack Overflow!我們鼓勵你[研究你的問題](http://stackoverflow.com/questions/how-to-ask)。如果你已經[嘗試了某些東西](http://whathaveyoutried.com/),請將其添加到問題中 - 如果沒有,請先研究並嘗試您的問題,然後再回來。 – 2012-09-02 08:49:19