2012-02-25 47 views
0

我有一個簡單的Java控制檯應用程序,並想自動測試其輸入/輸出。輸入總是隻有一行,但輸出有時不止一行。如何測試Java應用程序的輸入和輸出?

我該怎麼做? (與Linux外殼/ Python的/ Eclipse中/ JAVA)

+1

你什麼意思通過測試做?舉個例子吧。 – 2012-02-25 18:58:55

+0

如果應用程序是你的,你可以(也就是,*應*)從邏輯的其餘部分分離在main(),這樣你就可以用類似的xUnit測試代碼。 – 2012-02-25 19:13:56

回答

7

你可以在Linux中使用的管道。例如,運行您的問題,如下所示:

java myProgram <input_file> output_file 

這將運行myProgram和從input_file的feed輸入。所有輸出將被寫入一個名爲output_file的文件。

現在,創建另一個文件名爲expected_file你應該handcreate指定您希望對一些輸入精確的輸出(具體而言,輸入你在INPUT_FILE)。

然後你可以使用diff比較OUTPUT_FILE和expected_file:

diff output_file expected_file 

這將輸出兩個文件之間的差異。如果沒有差異,則不會返回任何內容。具體而言,如果返回某些內容,程序無法正常工作(或者測試錯誤)。

的最後一步是將所有這些命令在一些腳本語言鏈接像Ruby(:))或擊(:()。

這是做這類測試的最直接的方式。如果你需要編寫更多的測試,考慮使用像junit這樣的測試框架。

+2

您應該注意,管道的使用不是特定於Linux。在Windows和Mac OS X上也是如此。 – 2012-02-25 19:20:59

+0

絕對! :) – Oleksi 2012-02-25 20:13:51

1

在eclipse中,你可以使用運行配置設置來將你的控制檯輸出記錄到一個物理文件中運行 - >運行配置 - >選擇你的應用程序 - >去到共同標籤 - >在「標準輸入和輸出」部分指定物理文件路徑。

0

可以執行任何Unix下C ommand使用監視命令。 Watch命令將被執行,直到您通過CTRL + C終止它或終止進程。

$ watch -n 5 ls 

默認情況下,watch命令使用2秒的時間間隔,您可以使用-n選項更改它。

或者你可以寫這樣的功能在你的.bashrc(從here

function run() { 
    number=$1 
    shift 
    for i in {1..$number}; do 
     [email protected] 
    done 
} 

而且使用這樣的

run 10 command