MVC开发单元测试小工具 —— 搜寻还没写单元测试的方法
方法比较笨,有更好的建议可以提。
写这个工具呢,因为要写单元测试,保证代码质量,方便修改维护。一切为了自己方便。当然这个算是个人开发的项目
1、MVC中控制器建立个基类(这个光明正大的抄袭的),控制往前端传输的数据格式
2、所有控制器继承这个基类
3、在单元测试项目建立自定义特性,方便关联搜寻(我是没找到更好的办法关联,VS肯定是有关联的,奈何我找不到,各位有好的建议可以提)
4、写单元测试并加上特性
5、写小工具
6、小工具获取两个项目之间已存在的方法进行筛选。大概就下面这样吧。当然前提引用两个项目的程序集
/// <summary>
/// 测试用例没写到的方法
/// </summary>
public class NotTestFun
{
public List<string> GetNotTestFun()
{
//web程序集中控制器的方法
List<string> controllerFun = new List<string>();
//单元测试程序集中的测试方法
List<string> testControllerFun = new List<string>();
//还没写单元测试的方法
List<string> notTestFun = new List<string>(); Assembly assembly = Assembly.Load("Manage.Web");
Assembly assembly2 = Assembly.Load("Manage.Web.Tests");
controllerFun = assemblyFun(assembly);
testControllerFun = assemblyFunTest(assembly2);
foreach (var item in controllerFun)
{
string a = item;
foreach (var item2 in testControllerFun)
{
if (item==item2)
{
a = "";
}
}
if (a!="")
{
notTestFun.Add(a);
}
}
return notTestFun;
}
/// <summary>
/// 获取web程序集中所有继承自写基类控制器的方法
/// 自写基类控制器 MvcControllerBase
/// </summary>
/// <returns></returns>
public List<string> assemblyFun(Assembly assembly)
{
List<string> controller = new List<string>();
List<string> controllerFun = new List<string>();
Type[] types = assembly.GetTypes();
Type aType = typeof(MvcControllerBase);
List<MvcControllerBase> alist = new List<MvcControllerBase>();
foreach (Type type in types)
{
if (type.BaseType.Name == "MvcControllerBase" &&
type.BaseType.FullName == "Manage.Web.Controllers.MvcControllerBase"
)
{
controller.Add(type.Name);
//获取控制的所有方法
foreach (var item in type.GetMethods())
{
//是视图控制器
if (item.ReturnType.Equals(typeof(System.Web.Mvc.ActionResult))
&&
item.DeclaringType.Name != "MvcControllerBase"
)
{
controllerFun.Add(type.Name + "." + item.Name);
}
}
} }
return controllerFun;
}
/// <summary>
/// 获取单元测试中的测试方法
/// 根据自写特性关联控制器
/// </summary>
/// <returns></returns>
public List<string> assemblyFunTest(Assembly assembly)
{
List<string> controller = new List<string>();
List<string> controllerFun = new List<string>();
Type[] types = assembly.GetTypes();
Type aType = typeof(MvcControllerBase);
List<MvcControllerBase> alist = new List<MvcControllerBase>();
foreach (Type type in types)
{
controller.Add(type.Name);
//获取控制的所有方法
foreach (var item in type.GetMethods())
{
//CustomAttributes特性有2个,一个是TestMethod一个是TestAttr
//不同程序可自调
CustomAttributeData cd = item.CustomAttributes.SingleOrDefault(a => a.AttributeType == typeof(TestAttr));
if (cd!=null)
{
var list = cd.NamedArguments.ToList();
controllerFun.Add(list[0].TypedValue.Value.ToString());
}
}
}
return controllerFun;
}
}
------------------这是特性和单元测试---------------------------------- /// <summary>
/// 此特性用于开发小工具查看未写到的测试方法
/// </summary>
[AttributeUsage(AttributeTargets.Method)]
public class TestAttr : Attribute {
public string TestClassFun { get; set; }
}
[TestMethod]
[TestAttr(TestClassFun= "TeamController.Index")]
public void Index()
{
ViewResult result = controller.Index() as ViewResult;
Microsoft.VisualStudio.TestTools.UnitTesting.Assert.IsNotNull(result);
}
MVC开发单元测试小工具 —— 搜寻还没写单元测试的方法的更多相关文章
- C# JSON使用过程中开发的小工具
我在用JSON的过程中,经常要去看一下JSON的结构,而JSON串大不部分时候都是未格式化的数据,一次我不得不用一些网页上的在线解析和格式化工具来进行格式化查看,但是这些网页有时候并不好用:因此就结合 ...
- 动手使用ABAP Channel开发一些小工具,提升日常工作效率
今天的故事要从ABAP小游戏说起. 中国的ABAP从业者们手头或多或少都搜集了一些ABAP小游戏,比如下面这些. 消灭星星: 扫雷: 来自我的朋友刘梦,公众号"SAP干货铺"里的俄 ...
- ANDROID开发实用小工具
分享一些 Android开发中的实用小工具,你有发现好工具吗? 来这里分享一下呗 一.find bugs 静态检查工具 http://findbugs.sourceforge.net/ FindBug ...
- CodeMixerPro工具,完美替代ChaosTool,iOS添加垃圾代码工具,代码混淆工具,代码生成器,史上最好用的垃圾代码添加工具,自己开发的小工具
新工具 ProjectTool 已上线 这是一款快速写白包工具,秒级别写H5游戏壳包,可视化操作,极易使用,支持Swift.Objecive-C双语言 扣扣交流群:811715780 进入 Proje ...
- CodeMixer工具,完美替代ChaosTool,iOS添加垃圾代码工具,代码混淆工具,代码生成器,史上最好用的垃圾代码添加工具,自己开发的小工具
新工具 ProjectTool 已上线 这是一款快速写白包工具,秒级别写H5游戏壳包,可视化操作,极易使用,支持Swift.Objecive-C双语言 扣扣交流群:811715780 进入 Proje ...
- ASP.Net MVC开发基础学习笔记:二、HtmlHelper与扩展方法
一.一个功能强大的页面开发辅助类—HtmlHelper初步了解 1.1 有失必有得 在ASP.Net MVC中微软并没有提供类似服务器端控件那种开发方式,毕竟微软的MVC就是传统的请求处理响应的回归. ...
- XObject.java 对象还没写完,希望电脑不会丢失。坏笑,早点见。
/*面向对象强调的是对象, 面向过程强调的是功能行为,打开行为,关闭行为,执行行为,把多个行为封装成对象执行更强大的功能就是面向对象,是把多个函数, 多 个行为封装在一起,单一的函数执行对象的功能太困 ...
- 单元测试er——为什么真的真的要写单元测试
优点 为什么很多技术或者知识要说优点?因为有些道理看着很简单,大家表面上都觉得对,但是做的时候又不去做或者做不到.其中有一个很重要原因是骨子里或者潜意识并没有真实觉得这是对的,一旦想去做的时候同时会冒 ...
- 前端性能测试工具 : dynaTrace Ajax (还没写完)
今天开始写这个工具, #什么是dynaTrace Ajax? 随着 jQuery.Dojo.YUI 等框架的兴起让构建 Web2.0 应用更加容易,但随之带来的定位等应用问题也越来越难,尤其是与性能相 ...
- ChaosTool,iOS添加垃圾代码工具,代码混淆工具,代码生成器,史上最好用的垃圾代码添加工具,自己开发的小工具
最近在H5游戏项目中需要添加垃圾代码作混淆,提高过审机率.手动添加太费时费力,在网上并没有找到合适的比较好的工具,就自己动手写了一个垃圾代码添加工具,命名为ChaosTool. 扣扣交流群:81171 ...
随机推荐
- 我也是一个“翻译家”——关于“robust”
每次看到"鲁棒性",总是不知道是什么意思,一度怀疑自己是不是中国人,是不是说汉语.每次都要查英汉字典,然后一次次看到: robust(adj.精力充沛的; 坚定的; 粗野的,粗鲁的 ...
- Elasticsearch:top_hits aggregation
top_hits指标聚合器跟踪要聚合的最相关文档. 该聚合器旨在用作子聚合器,以便可以按存储分区汇总最匹配的文档. top_hits聚合器可以有效地用于通过存储桶聚合器按某些字段对结果集进行分组. 一 ...
- 1_Layui
一. 引言 官网: https://www.layui.com/ 在官网首页, 可以很方便的下载Layui Layui是一款经典模块化前端UI框架, 我们只需要定义简单的HTML,CSS,JS即可实现 ...
- 分布式存储系统之Ceph集群存储池操作
前文我们了解了ceph的存储池.PG.CRUSH.客户端IO的简要工作过程.Ceph客户端计算PG_ID的步骤的相关话题,回顾请参考https://www.cnblogs.com/qiuhom-187 ...
- 关于private子网访问s3时报错:Connect timeout on endpoint URL
今天在使用private私有子网,通过aws s3命令访问s3时,报如下错误: [qq_5201351@private ~]$ aws s3 ls Connect timeout on endpoin ...
- useEffect 和 useLayoutEffect浅析
执行时期的区别 useEffect 回调函数的执行时期 useEffect为异步执行,执行时期为 触发状态更新(如:setState,forceUpdate) React渲染函数执行(render) ...
- linux 安装/卸载go环境
linux 安装/卸载go环境(基于centos8) 安装 下载go的安装包 Golang官网下载地址:https://golang.org/dl/ 将安装包解压放到到usr/local中,并解压 c ...
- 【python】Ubuntu中多条命令的运行
在模型训练时,往往需要消融实验,通常都是在一个程序运行结束后才再次手动运行下一个,不及时在电脑前可能无端浪费时间,因此需要让程序自动一个接一个去执行.受此启发,特了解了Ubuntu中多命令运行的内容. ...
- 20220729 - DP训练 #2
20220729 - DP训练 #2 时间记录 \(8:00-8:10\) 浏览题面 \(8:10-8:50\) T1 看题想到了建树,从每一个点遍历,若能遍历每一个点,则可以获胜 快速写完之后,发现 ...
- MySQL 全局锁、表级锁、行级锁,你搞清楚了吗?
大家好,我是小林. 最近重新补充了<MySQL 有哪些锁>文章内容: 增加记录锁.间隙锁.net-key 锁 增加插入意向锁 增加自增锁为 innodb_autoinc_lock_mode ...