• 测试技术
  • 博客
  • 视频
  • 开源
  • 论坛
  • 沙龙
  • 下载
  • 杂志
  • 招聘

字号: | 推荐给好友 上一篇 | 下一篇

使用NUnit测试Private和Protected方法

发布: 2008-9-25 10:20 | 作者: 不详 | 来源: 领测软件测试网 采编 | 查看: 49次 | 进入领测软件测试网论坛讨论

领测软件测试网

j'GL$V B,F$zr软件测试技术门户1x h%r]cndY}
软件测试技术门户2E$@afv{d'OD
软件测试技术门户)v Z#e6KQ,E!l&x
测试 private 方法需要使用反射 软件测试技术门户QB/?z+`N
假设要测试下面 ClassLibrary1.Class1 中的 MyPrivateMethod() 方法:
using System;

namespace ClassLibrary1
{
    /// <summary>
    /// Summary description for Class1.
    /// </summary>
    public class Class1
    {
        protected int MyPrivateMethod(int val1, int val2)
        {
            return val1 + val2;
        }
    } // end of class

} // end of namespace
下面是测试类代码:
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>

L5r~)`j9zL+T#@ Pt._