从单元测试NUnit中理解.NET自定义属性的应用[4] 单元测试工具
关键字:.NET NUnit
而InvokeXXX()函数则利用反射机制运行相关函数,可以看看以下几个代码段:
//From TemplateTestCase in NUnit.Core namespace
private void InvokeSetUp()
{
MethodInfo method = FindSetUpMethod(fixture);//取得[SetUp]标记的函数反射实例
if(method != null)
{
InvokeMethod(method, fixture);//运行该函数
}
}
FindSetUpMethod(…)通过调用一个叫FindMethodByAttribute(…)的函数,利用反射机制来获得可调用该函数的MethodInfo,并最后通过InvokeMethod(MethodInfo,…)来运行。
//From Test class in NUnit.Core namespace
protected void InvokeMethod(MethodInfo method, object fixture)
{
if(method != null)
{
try
{
method.Invoke(fixture, null);//调用由method实例反射的方法或构造函数
}
catch(…)
//…
}