簡體   English   中英

Java命令行程序的TDD和嵌套的readLine()

[英]TDD for Java Command-line program and nested readLine()

基本上,我正在編寫一個Java命令行應用程序,該應用程序通過readLine接受用戶的參數。 例如,如果用戶按“ 1”它將詢問用戶要簽出的書,則用戶可以按“ 1”或“ 2”按書號...因此,應用程序兩次接受用戶參數。 我也嘗試使用TDD來同時測試應用程序。

這是問題所在。 如果我做這樣的事情來模擬用戶輸入

System.setIn(new ByteArrayInputStream(PRESS_TWO.getBytes())); // set the first option

Program.main(new String[]{}); // run the program

System.setIn(new ByteArrayInputStream(PRESS_ONE.getBytes())); // set the second option

等待用戶選擇選項的第一步是可以的,但是它將直接進行第二步,而無需等待第二個輸入。 如何在JUnit中對此進行仿真?

謝謝

這就是我閱讀輸入的方式

 try {

            i1 = Integer.parseInt(reader.readLine());
        }
        catch (Exception e) {
            System.out.println("Enter a valid integer!!");
        }

        if (i1 == 1) {
            System.out.println(" 1. Book1 ");
            System.out.println(" 2. eBook2 ");
            System.out.println(" 3. Book3 ");
        }
        else if (i1 == 2) {
            System.out.println(" Which one do you want?: ");
            int i2 = 0;
            try {
                i2 = Integer.parseInt(reader.readLine());
            }
            catch (Exception e) {
                // Do you know what numbers are!!!
                System.out.println("Enter a valid integer!!");

            }
       }

這取決於您的代碼如何讀取輸入,但是我假設一旦到達第一個ByteArrayInputStream的末尾,您的代碼就會看到文件結尾並終止。 嘗試將兩個流合並為一個(用換行符分隔)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM