2011-11-29 25 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

相关问题