首页 > 代码库 > [工具]小测试和学习项目清单化框架

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

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

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

 

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