[英]Best way to unit test console c# app
我有一個簡單的控制台應用程序 它被普通的主要解雇了,整個程序都在main中。 它使用命令行分析器庫 。 然后我在解決方案中有第二個項目,包含應用程序的單元測試。 但我似乎沒有找到從測試中啟動主程序進程的好方法。 我當前啟動該過程的代碼看起來像這樣。
...
process = new Process();
process.StartInfo.FileName = "FooBar";
process.StartInfo.Arguments = arguments;
// use it to start from testing environment
process.StartInfo.UseShellExecute = false;
// redirect outputs to have it in testing console
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.RedirectStandardError = true;
...
我試過設置
process.StartInfo.WorkingDirectory
至
AppDomain.CurrentDomain.BaseDirectory
和
Environment.CurrentDirectory;
但是,我是否必須為控制台應用程序可執行文件指定整個相對路徑,還是有一種改進的方法來啟動“已測試”應用程序的進程? 首先,我在“主要”程序中將我的測試作為一個類,然后它工作得很好。 當我將測試移動到他們自己的項目時,問題就開始了。 這就是為什么我懷疑道路是問題或者那種性質的東西。
我也嘗試過運行Program.Main,但這感覺很錯:)
我建議將您的應用程序重組為:
Program
- 一個解析參數的入口點,創建一個Settings
實例 Settings
- 應用程序的設置(根據品味重命名) BusinessClass
- (絕對重命名!)實際工作,它接受一個Settings
實例 現在您可以單獨測試內容:
Settings
,即您是否正確使用解析器庫 Settings
實例 如果可能,您應該將業務邏輯分離為單獨的類,以便分別考慮單獨的問題,並分別對每個問題進行測試。 我們真的不知道在這里提出具體的建議。
我不知道為什么運行Program.Main對你來說感覺不對。
你不應該對控制台機制進行單元測試..只有你的程序邏輯,你可以輕松地這樣做。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.