Tim*_*Tim 4 c# unit-testing fxcop
我想测试我的自定义fxrules.
我看过这篇文章:http://weblogs.asp.net/rosherove/archive/2007/02/24/writing-real-unit-tests-for-your-custom-fxcop-rules.aspx
但它不适用于最后一个版本的fxcop.Microsoft.Cci.Method.GetMethod不存在,我找不到替代方案.
你知道如何获得Microsoft.FxCop.Sdk.Method对象吗?
在此先感谢您的帮助.最好的祝福,
鉴于用于编写自定义规则的API与单元测试所需的API一致,并且在1.36(对于CLR2)和10.0(对于CLR4)之间保持相同 - 可能值得注意的是获取Microsoft.FxCop.Sdk.Method对象的过程概述,可以仅使用publicFxCop程序集中声明的类型和方法执行(不需要反射技巧).
从Type您想要的对象开始Microsoft.FxCop.Sdk.Method,调用它t.通过静态入口点获取AssemblyNode包含的程序集t
assembly = AssemblyNode.GetAssembly(t.Module.Assembly.Location)
Run Code Online (Sandbox Code Playgroud)
获取TypeNode对应于tvia 的FxCop
assembly.GetType(Identifier.For(t.Namespace), Identifier.For(t.Name))
Run Code Online (Sandbox Code Playgroud)
然后通过搜索TypeNode的Members领域找到一个地方member.Name.Name就是你要找的方法的名称.鉴于这是一个单元测试,您应该能够安排正在检查的虚拟方法不会过载.
然后打电话MyRule.Check(member)来进行测试; 这将返回Problem对象集合,可以检查这些对象以断言它包含预期结果和仅包含预期结果.