使用JUnit 進行測試模擬系統
在軟體測試領域,人們在處理以下問題時經常面臨模擬用戶輸入的挑戰命令列程式.當程式提示透過 System.in 輸入時,如何在 JUnit 測試中自動執行此行為?
解決方案
解決方案避免在內部直接呼叫System.in你的程式碼。引入抽象層來管理輸入來源。您可以透過依賴注入或傳遞 I/O 上下文來實現此目的。
String data = "Hello, World!\r\n";
InputStream stdin = System.in;
try {
System.setIn(new ByteArrayInputStream(data.getBytes()));
Scanner scanner = new Scanner(System.in);
System.out.println(scanner.nextLine());
} finally {
System.setIn(stdin);
}
使用 Java 8 流來操作 System.in溪流。例如:String data = "Hello, World!\r\n";
輸入流 stdin = System.in;
嘗試 {
System.setIn(new ByteArrayInputStream(data.getBytes()));
掃描器掃描器 = new Scanner(System.in);
System.out.println(scanner.nextLine());
} 最後 {
System.setIn(stdin);
}
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3