簡體   English   中英

JUnit 不向主方法 Java 傳遞參數

[英]JUnit Passing No arguments to main Method Java

我正在嘗試測試我的 main 方法(它應該只接受一個參數)是否沒有傳遞參數。 似乎無法理解我在這里缺少什么來實現這一點。我的程序的性質是它從文件中讀取輸入,通過傳遞從文件中讀取的參數來創建對象,並顯示輸出。

失敗信息:

org.junit.ComparisonFailure:預期:請傳遞一個參數

實際的 :

這是我的單元測試:

    @Test
    public void givenNoParameter_shouldAskForOne() throws IOException {
    String[] args = {};
    String output;

    try (ByteArrayOutputStream bOutput = new ByteArrayOutputStream()) {
        System.setOut(new PrintStream(bOutput));
        Main.main(args);
        bOutput.flush();
        output = bOutput.toString();
    }
    String newLine = System.getProperty("line.separator");
    String[] breakDownOutput = output.split(newLine);

    assertEquals(1, breakDownOutput.length);
    assertEquals("Please pass one argument", breakDownOutput[0]);
}

主要方法:

public static void main(String[] args) {

    if(args.length == 1) {
        DisplayOrder.setFilePath(args[0]);
        DisplayOrder.display();
    } else{
        System.err.println("Please pass one argument");
    }
}

我已經意識到我在我的主要使用 System.err.println() 。 將其更改為 System.out.println() 修復了它。

沒有顯示您的主要方法,我唯一的猜測是,您沒有在您的主要內容中向“System.out”寫入任何內容,尤其是沒有System.out.println("Please pass one argument"); 執行的語句。 因此,對於“ breakDownOutput[0] ”中的非預期值,您的單元測試完全失敗。

您需要做的是確保System.out.println("Please pass one argument"); 如果您的 main.js 沒有提供任何參數,則執行。 還要檢查您的類名Main.main(...)因為可能導入了其他Main類,它們永遠不會將您的預期值打印到System.out

暫無
暫無

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

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