• [工具]小测试和学习项目清单化框架


    下载Personal_Study_Assistant.zip

    背景

      实际中,我们可能要经常会对一些API或小核心代码不太确定,于是写一些小测试代码,如正则表达式测试。时间久了,这些小项目散落得到处都是,查找和整理起来都比较费时间。

    “工欲善其事,必先利其器”,下面让我们来解决一下这个问题吧。

      程序的思路是: 1所有的测试文件统一归类存放于不同的Project; 2Project启动时,自动生成所有测试代码的清单,通过输入清单序号选择对应的测试来执行,不用更改Program的Main方法。

      (目前还不能显示测试用例对应的文件名)。

    效果

    说明

      继续往下前,建议先下载Demo

    1 Cp.Core

      核心层中目前只有一个类和一个接口。接口ITest描述了作为测试实例应该具备的属性和方法。CaseContainer用于扫描当前项目中的测试用例,生成上面的菜单。

    代码中使用到的主要知识点为反射。

    2 Cp.EmitStudy

      有了核心层,下面就开始根据我们的需求,进行分类存放测试实例了。Demo中,以Emit学习为例,那了一个新的Project,类型为控制台类型。

    新项目的Program.cs的Main函数只有一行代码:

            static void Main(string[] args)
            {
                CaseContainer.ShowCases();
            }

      余下的就是写我们的测试或学习用例了。Demo中Test2为我模拟AutoMapper写的一段代码,用于在两个对象间相互浅复制属性:

     class Test2:ITest
        {
            class Model
            {
                public string Name { get; set; }
            }
    
            class ViewModel
            {
                public string Name { get; set; }
            }
    
            public string Name
            {
                get
                {
                    return "Linq Assign Expression Test";
                }
            }
    
            public string Description
            {
                get
                {
                    return "This demo demenstrates how to use Linq Expression to mapping properties between two object.";
                    //return "此示例展示了如何利用Linq Expression将两个对象的属性进行映射";
                }
            }
    
            public void Test()
            {
                Expression<Func<Model, string>> exp1 = m => m.Name;
                Expression<Func<ViewModel, string>> exp2 = vm => vm.Name;
                var assignExp = Expression.Assign(exp2.Body, exp1.Body);
                var mapAction = Expression.Lambda<Action<Model, ViewModel>>(assignExp, exp1.Parameters[0], exp2.Parameters[0]).Compile();
    
                var m1 = new Model() { Name = "MODEL's Name" };
                var m2 = new ViewModel();
                mapAction(m1, m2);
                Console.WriteLine(m2.Name);
            }        
        }   

    3 后续

      余下来要做的就是,写新的用例,放在当前项目下,然后F5。查看和启动都会比较方便。

      有时候我们可以为了学习某一个框架或一些代码自己写一些测试Demo,那么我们可以专门建一个新的Study项目。

      我们可以把此项目设置一个快捷方式到桌面,脑中灵光一闪想写程序的时候就点吧~

  • 相关阅读:
    Mac environment setting
    详解nginx.conf文件配置项(包括负载均衡)
    检查windows端口被占用
    linux下的环境变量
    利用MVC思想和php语言写网站的心得
    React学习:列表&&Key
    React学习:条件渲染
    事件处理
    state&生命周期
    react学习:组件&props
  • 原文地址:https://www.cnblogs.com/caption/p/4001974.html
Copyright © 2020-2023  润新知