单元测试之moles

一、moles使用注意事项
  1. 被测类要使用public修饰符,不然无法使用生成的moles.dll。
  2. 测试方法要使用[HostType("Moles")]标记。

二、moles模拟函数


1.静态函数

源代码:

   public class Program
    {
        public int a { get; set; }
        public static string A()
        {
            return "hello";
        }
        static void Main(string[] args)
        {
        }
    }













测试代码:

  MProgram.A = () => "yes";
  Assert.AreEqual("hello", Program.A());

2、一般函数

源代码:

    public class Program
    {
        public int a { get; set; }
        public string A()
        {
            return "hello";
        }
        static void Main(string[] args)
        {
        }
    }

测试代码:

            MProgram.AllInstances.A = _ => "yes";
            var m = new MProgram()
            {
                A=()=>"no"
            };
            var m2 = new MProgram();
            Program p = m.Instance;
            Program p2 = m2.Instance;
            Assert.AreEqual("yes",p.A());
            Assert.AreEqual("no",p2.A());

4、属性

源代码

    public class Program
    {
        public int a { get; set; }
        public  string A()
        {
            return "hello";
        }
        static void Main(string[] args)
        {
        }
    }
测试代码

            MProgram.AllInstances.aGet = _ => 5;
            MProgram m = new MProgram();
            Program p = m.Instance;
            
            Assert.AreEqual(5,p.a);

5、构造函数

源代码:

    public class Program
    {
        public int a { get; set; }
        public  string A()
        {
            return "hello";
        }
        public Program(int a)
        {
            this.a = a;
        }
        static void Main(string[] args)
        {
        }
    }
测试代码:

            MProgram.ConstructorInt32 = (@this, value) =>
            {
                var mp = new MProgram(@this)
                {
                    aGet = ()=>value
                };
            };
            Program pp = new Program(5);
            MProgram m = new MProgram(pp);
            Program p = m.Instance;
            
            Assert.AreEqual(5,p.a);

6、带参函数

上面的函数都是没有参数的有木有?下面来个带参的

源代码:

    public class Program
    {
        public int a { get; set; }
        public string A(int a)
        {
            return "hello";
        }
        static void Main(string[] args)
        {
        }
    }
测试代码:

            MProgram.AllInstances.AInt32 = (content, b) =>
            {    
                
                return "ys"+b;// () => "yes";
            };
            var m2 = new MProgram();
            Program p2 = m2.Instance;
            Assert.AreEqual("ys4", p2.A(4));
可以看出,moles将带参函数A改编成AInt32,可能是为了处理重载函数吧。

三、moles缺点


  1. 对源代码的每次修改,测试工程都必须rebuild才能生效。
  2. 等等....

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值