簡體   English   中英

單元測試控制台c#app的最佳方式

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

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