2011-11-29 23 views
2

我在做單元測試,我想測試:C#創建大會,並設置版本 - 在運行期間

public static string GetVersion(Assembly assembly) 
{ 
    return assembly.GetName().Version.ToString(); 
} 

的問題是在標題。

這甚至可能嗎?

+0

你想改變你自己的程序集或傳遞給該方法的程序集的版本? – Kolja

+0

我想創建程序集並設置程序版本。如果版本正確,我將大會通過我的方法進行測試。 – eMi

+0

好吧,你有程序集A有一個版本,你有一個程序集B,應該檢查A是否有某個版本?並且程序集A應該創建它的程序版本? – Kolja

回答

1

我認爲通過反思,你可以改變屬性的響應,但它不會寫入它自己的程序集。

PropertyInfo nameProperty = typeof (Version).GetProperty ("Version"); 
FieldInfo versionField = nameProperty.GetBackingField(); 
versionField.SetValue (assemby.GetName().Version, <Version you want>); 
0

這聽起來像是一個mock object的工作。創建一個虛假類型,「嘲笑」程序集類型,並使用該虛假類型進行測試。比試圖讓宇宙屈從於你的意願更容易,只是爲了測試你的代碼處理不明顯的角落情況。

偵察,有多個庫可以創建模擬類型。這裏有一個:http://msdn.microsoft.com/en-us/magazine/cc163904.aspx

+0

那一個是從2004年開始的,所以也許不是最好的例子......所有基於字符串的,沒有編譯器支持,不是重構友好的。 Moq,RhinoMocks或TypeMock可能會是更好的起點。 –

+0

就像我說的,偵察一下,找到一個適合你的方法。 MSDN鏈接是谷歌搜索中彈出的第一個「模擬測試.net」泡沫。沖洗。重複。 – dthorpe

相關問題