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

下载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项目。

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

 

posted @ 2014-09-30 14:50  Caption  阅读(492)  评论(1编辑  收藏  举报