您的位置:软件测试 > 开源软件测试 > 开源单元测试工具 > Nunit
使用NUnit测试Private和Protected方法
作者:网络转载 发布时间:[ 2013/3/12 15:57:51 ] 推荐标签:

下面是测试类代码:
using System;
using System.Reflection;

using NUnit.Framework;

namespace ClassLibrary1
{
    /**//// <summary>
    /// Summary description for Tester.
    /// </summary>
    [TestFixture]
    public class Tester
    {
        [Test]
        public void MyPrivateMethod_Test()
        {
            ClassLibrary1.Class1 class1 = new ClassLibrary1.Class1();
            object[] aobjParams = new object[] { 3, 4 };
            object strRet;
            strRet = RunInstanceMethod( typeof(ClassLibrary1.Class1),
                "MyPrivateMethod",
                class1,
                aobjParams
            );
            Assert.AreEqual(7, strRet.ToString());
        }

        /**//// <summary>
        /// 运行静态方法
        /// </summary>
        /// <param name="t"></param>
        /// <param name="strMethod"></param>
        /// <param name="aobjParams"></param>
        /// <returns></returns>
        public static object RunStaticMethod(System.Type t, string strMethod,
            object [] aobjParams)
        {
            BindingFlags eFlags =
                BindingFlags.Static | BindingFlags.Public |
                BindingFlags.NonPublic;
            return RunMethod(t, strMethod,
                null, aobjParams, eFlags);
        }

        /**//// <summary>
        /// 运行实例方法
        /// </summary>
        /// <param name="t"></param>
        /// <param name="strMethod"></param>
        /// <param name="objInstance"></param>
        /// <param name="aobjParams"></param>
        /// <returns></returns>
        public static object RunInstanceMethod(System.Type t, string strMethod,
            object objInstance, object [] aobjParams)
        {
            BindingFlags eFlags = BindingFlags.Instance | BindingFlags.Public |
                BindingFlags.NonPublic;
            return RunMethod(t, strMethod,
                objInstance, aobjParams, eFlags);
        }

        /**//// <summary>
        /// 运行自定义方法
        /// </summary>
        /// <param name="t"></param>
        /// <param name="strMethod"></param>
        /// <param name="objInstance"></param>
        /// <param name="aobjParams"></param>
        /// <param name="eFlags"></param>
        /// <returns></returns>
        private static object RunMethod(System.Type t, string
            strMethod, object objInstance, object [] aobjParams, BindingFlags eFlags)
        {
            MethodInfo m;
            try
            {
                m = t.GetMethod(strMethod, eFlags);
                if (m == null)
                {
                    throw new ArgumentException("There is no method '" +
                        strMethod + "' for type '" + t.ToString() + "'.");
                }
                               
                object objRet = m.Invoke(objInstance, aobjParams);
                return objRet;
            }
            catch
            {
                throw;
            }
        }

    } // end of class

} // end of namespace

上一页12下一页
软件测试工具 | 联系我们 | 投诉建议 | 诚聘英才 | 申请使用列表 | 网站地图
沪ICP备07036474 2003-2017 版权所有 上海泽众软件科技有限公司 Shanghai ZeZhong Software Co.,Ltd