[英]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.