2009-08-28 163 views
1

我已經爲VS 2008 C#中的庫建立了一個單元測試項目。該庫將對命令行參數做出反應。我使用默認參數設置了單元測試的屬性 - >調試 - >啓動選項,以觸發目標庫中的特定響應。我的問題是:在C#中調試命令行參數

1)當庫代碼執行Environment.GetCommandLineArgs()時,它看不到我設置的任何默認參數。我甚至將單元測試項目中的默認參數複製到了庫項目的屬性中,沒有任何效果。我沒做什麼(對)?

2)是否有編程方法來設置命令行參數?我希望各種測試能夠設置參數並觀察庫的行爲。

謝謝你,吉姆

+0

可以肯定的是,您正在運行調試版本嗎? – 2009-08-28 15:26:12

+0

我希望如此。我去單元測試項目,選擇一個測試方法,使用排水溝中的圖標,我選擇調試。我在庫中分解並通過GetCommandLineArgs()調用。我看到它的參數看起來像測試項目的命令行 - 不是我在「調試啓動選項」中設置的參數。不知何故,我需要從「屬性」頁面「激活」參數。 – 2009-08-28 16:30:31

+0

啊哈。我從args [0]看到ReSharper涉及到: 「C:\\ ... \\ JetBrains.ReSharper.TaskRunner.exe」 然後arg [1]是「ipc://0ff1a572-0...cbc4bdde 「 和我期待從我的設置」E = DEVLOPMENT「。 ReSharper正在阻擋我。 – 2009-08-28 16:36:52

回答

2

發現問題。 ReSharper加載項運行它的TaskRunner.exe來執行單元測試。調用TaskRunner時的命令行不考慮調試設置。 JetBrains(製造商)現在意識到這個問題。

2

它並不直接回答你的問題,但我會建議在庫中不使用命令行參數。命令行參數應該由可執行文件解析,然後將適當的參數傳遞給庫。在單元測試的情況下,您可以簡單地傳遞測試參數。考慮在GUI應用程序中使用庫,其中用戶在表單中輸入參數而不是命令行參數,或者以兩種不同方式使用庫兩次使用庫。

+0

優秀點;你絕對正確。我應該明確指出,圖書館是應用程序的命令行分析器。它將爲命令行和.config設置的解釋提供通用性。 – 2009-08-28 16:25:54