2010-07-06 135 views
2

我有一個資源程序集,其中包含我的應用程序使用的各種字符串,圖標和位圖。如何爲單元測試創​​建內存中圖標

我寫了一個資源管理器類,我想單元測試。我設法創建了具有內存字符串(duh)和位圖的單元測試,但我正在努力處理圖標資源。

只需使用高度和寬度參數即可輕鬆創建位圖,但圖標似乎需要有效的流。

我已經試過:

Icon icon = new Icon(new MemoryStream(), new Size(10, 15)); 

但是,這給我的錯誤「論證‘圖像’必須是可以被用作圖標的圖片」。

很顯然,我正在嘗試編寫單元測試,以避免必須從文件系統加載實際圖標。此外,ResourceManager類正在處理程序集中的嵌入式資源,因此我不想在單元測試程序集中嵌入真正的圖標,否則我將使用類似的代碼來促進測試,這看起來反直觀。

任何想法?

乾杯, 奔的標準系統圖標

+0

您是否嘗試將圖標存儲爲二進制值(或常量),然後將二進制值寫入流? – Kane 2010-07-06 10:37:08

+0

我剛剛看了一下,並隨機選擇了一個圖標,創建了一個長度爲34494的字節數組。不確定如何獲得一個有效的字節數組,其長度爲常量。 – 2010-07-06 10:57:23

+0

從查看文檔,我認爲你將不得不提供一個真正的圖標流,我相信它也包含一些元數據。所以如果不在這裏使用嵌入式資源,它將很難脫身。 – Grzenio 2010-07-06 11:02:54

回答

2

爲什麼不直接使用嗎?像

Icon icon = System.Drawing.SystemIcons.WinLogo; 
+0

嗨,這是一個好主意。我不知道這個系統圖標的集合。這確實讓我有一個內存中的圖標,但我仍然有一些問題。 我可以使用Icon.Save方法將WinLogo轉換爲流,但是當我使用此流重新創建使用圖標構造函數的圖標時,我得到了與「有效圖片」相同的錯誤消息 – 2010-07-06 12:55:23

+0

好吧,這是因爲在該圖標被寫入到我忽略的位置歸零的流中。現在工作!謝謝。 – 2010-07-06 13:04:01

相關問題