這已被問過,但沒有澄清到我得到它的地步。與我在這個主題上看到的其他一兩個線程類似,我正在使用命令行輸入來登錄/關閉,斷開連接等工作,並且我不確定如何在JUnit測試中對其進行模擬案件。其他回覆表明我應該嘗試將System.in更改爲單獨的InputStream,但是......然後呢? dr:我在我的實際代碼中有一個用於解析命令行輸入的方法,並且需要JUnit測試方法,輸入並正確處理這些方法。JUnit命令行測試
1
A
回答
1
編輯:看來我誤解了這個問題。我通常使用術語「命令行輸入」來指代給予流程開始的命令行參數,而不是交互式控制檯輸入。然而...
漢鼎你真正的代碼,通過使用不同的InputStream
甚至可能是一個Reader
或Scanner
的確會幫助 - 任何以「讓輸入」部分從控制檯中分離出來。然後,您可以非常容易地將輸入僞裝成一行,在測試代碼中使用字符串作爲輸入,然後將其轉換爲字節並將這些字節包裝到ByteArrayInputStream
中或直接將字符串包裝到StringReader
中。
這樣做的不足之處在於,爲了檢查結果,在一個命令後面做這個「暫停」並沒有簡單的方法。
您可能要有所改變設計,使得其讀取部分輸入來自哪個處理輸入部分分離。閱讀部分可能是一個非常簡單的循環,順序上:
String line;
while ((line = reader.readLine()) != null) {
handleInput(line);
}
然後,您可能會離開的那部分未經測試的單元測試,或者寫一些比較原始的測試 - 但你可以再測試handleInput
廣泛,如它現在與輸入源分離。
原來的答覆
如果你提取從真正啓動應用程序的代碼解析的代碼,很容易:運行該代碼,並檢查結果。當然,如果你有某種封裝選項的類,這將是最簡單的。例如,您main
方法可能是這樣的:
public static void main(String[] args) {
Options options = Options.parse(args);
// Use options here
}
然後,你可以測試Options.parse
變得非常容易。
相關問題
- 1. 從命令行運行Junit測試
- 2. 如何使用mvn測試命令運行MRUnit測試(如JUnit測試)
- 3. 從命令行運行JUnit測試:在Android項目中執行非Android測試
- 4. 如何通過命令行作爲JUnit測試運行java類
- 5. 如何從命令行運行Eclipse java JUnit測試套件? (windows)
- 6. 從命令行運行JUnit測試時出錯
- 7. 從命令行運行war包中的junit測試
- 8. 如何從命令行使用junit運行多個測試類?
- 9. 在Eclipse中執行JUnit測試之前運行外部命令
- 10. 如何從命令行在框中運行JUnit測試?
- 11. junit並從命令行運行硒測試
- 12. 如何從命令行在JUnit中運行測試用例?
- 13. 錯誤:jar中的JUnit命令行測試類
- 14. Selenium測試命令行
- 15. Android命令行測試
- 16. 測試命令行參數
- 17. JUnit的設置命令行
- 18. Junit - 命令行參數
- 19. 並行運行JUnit測試
- 20. 傳遞命令行參數的JUnit測試案例被編程方式運行
- 21. 我可以運行JUnit 4從命令行測試Scala代碼嗎?
- 22. Maven在Eclipse中運行JUnit測試,但從命令行編譯失敗
- 23. 爲需要命令行輸入的Java獨立執行JUnit測試用例
- 24. 如果類在包中,如何從命令行運行JUnit測試?
- 25. 使用命令行構建和運行junit測試文件的問題
- 26. 從命令行運行單元測試
- 27. 在命令行上運行appium測試
- 28. 從命令行運行FitNesse的測試
- 29. Xcode命令行測試執行問題
- 30. 從命令行執行FitNesse RestFixture測試
我可能只是有一個史詩般的brainfart,但我不認爲這真的回答了我的問題。我可以在我的JUnit測試用例中啓動「Welcome,請輸入命令:」循環,但是如何從前面提到的沒有主要方法的測試用例輸入命令? – 2011-03-31 06:05:47
@尼克:啊,我明白了。通過「命令行輸入」,我認爲你的意思是命令行參數......而你的意思是交互式控制檯輸入。將編輯。 – 2011-03-31 06:11:03
我認爲把閱讀與處理分開是我的方法。有一個接受字符串參數的方法,所以我可以在JUnit中手動傳遞它,這將使我的生活變得輕鬆。謝謝。 – 2011-03-31 06:22:45