方法比较笨,有更好的建议可以提。

写这个工具呢,因为要写单元测试,保证代码质量,方便修改维护。一切为了自己方便。当然这个算是个人开发的项目

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开发单元测试小工具 —— 搜寻还没写单元测试的方法的更多相关文章

  1. C# JSON使用过程中开发的小工具

    我在用JSON的过程中,经常要去看一下JSON的结构,而JSON串大不部分时候都是未格式化的数据,一次我不得不用一些网页上的在线解析和格式化工具来进行格式化查看,但是这些网页有时候并不好用:因此就结合 ...

  2. 动手使用ABAP Channel开发一些小工具,提升日常工作效率

    今天的故事要从ABAP小游戏说起. 中国的ABAP从业者们手头或多或少都搜集了一些ABAP小游戏,比如下面这些. 消灭星星: 扫雷: 来自我的朋友刘梦,公众号"SAP干货铺"里的俄 ...

  3. ANDROID开发实用小工具

    分享一些 Android开发中的实用小工具,你有发现好工具吗? 来这里分享一下呗 一.find bugs 静态检查工具 http://findbugs.sourceforge.net/ FindBug ...

  4. CodeMixerPro工具,完美替代ChaosTool,iOS添加垃圾代码工具,代码混淆工具,代码生成器,史上最好用的垃圾代码添加工具,自己开发的小工具

    新工具 ProjectTool 已上线 这是一款快速写白包工具,秒级别写H5游戏壳包,可视化操作,极易使用,支持Swift.Objecive-C双语言 扣扣交流群:811715780 进入 Proje ...

  5. CodeMixer工具,完美替代ChaosTool,iOS添加垃圾代码工具,代码混淆工具,代码生成器,史上最好用的垃圾代码添加工具,自己开发的小工具

    新工具 ProjectTool 已上线 这是一款快速写白包工具,秒级别写H5游戏壳包,可视化操作,极易使用,支持Swift.Objecive-C双语言 扣扣交流群:811715780 进入 Proje ...

  6. ASP.Net MVC开发基础学习笔记:二、HtmlHelper与扩展方法

    一.一个功能强大的页面开发辅助类—HtmlHelper初步了解 1.1 有失必有得 在ASP.Net MVC中微软并没有提供类似服务器端控件那种开发方式,毕竟微软的MVC就是传统的请求处理响应的回归. ...

  7. XObject.java 对象还没写完,希望电脑不会丢失。坏笑,早点见。

    /*面向对象强调的是对象, 面向过程强调的是功能行为,打开行为,关闭行为,执行行为,把多个行为封装成对象执行更强大的功能就是面向对象,是把多个函数, 多 个行为封装在一起,单一的函数执行对象的功能太困 ...

  8. 单元测试er——为什么真的真的要写单元测试

    优点 为什么很多技术或者知识要说优点?因为有些道理看着很简单,大家表面上都觉得对,但是做的时候又不去做或者做不到.其中有一个很重要原因是骨子里或者潜意识并没有真实觉得这是对的,一旦想去做的时候同时会冒 ...

  9. 前端性能测试工具 : dynaTrace Ajax (还没写完)

    今天开始写这个工具, #什么是dynaTrace Ajax? 随着 jQuery.Dojo.YUI 等框架的兴起让构建 Web2.0 应用更加容易,但随之带来的定位等应用问题也越来越难,尤其是与性能相 ...

  10. ChaosTool,iOS添加垃圾代码工具,代码混淆工具,代码生成器,史上最好用的垃圾代码添加工具,自己开发的小工具

    最近在H5游戏项目中需要添加垃圾代码作混淆,提高过审机率.手动添加太费时费力,在网上并没有找到合适的比较好的工具,就自己动手写了一个垃圾代码添加工具,命名为ChaosTool. 扣扣交流群:81171 ...

随机推荐

  1. Springboot_maven多环境配置

    开发过程中总是需要多环境配置,而Spring自带的方式不是那么优秀,可以利用maven来帮助做到 可以再pom.xml中配置profiles来做到 打包命令: mvn clean package -P ...

  2. AD画板从头开始

    AD画板从头开始 前言 近期认真的画了一次板子,以前虽然也画过,但是都是很随意的,这次是做一个小项目,然后因为有一段时间没有画板了,发现自己很多基础的东西都忘记了,这里就来记录一下从头到尾的过程.本次 ...

  3. Windows Server Backup保留副本数量的问题

    在配置Windows Server Backup的时候可以配置备份时间点和备份存放位置,但是无法配置保留备份的数量.作为微软提供的一个基本的备份工具,做简单的备份还是可以的.但是对于同一备份任务,反复 ...

  4. liunx标准输入与输出

    一.Linux提供了三种输入/输出通道给程序在linux中,每个进程都会有三个文件,并且这三个文件会进行重定向处理:1. 标准输入(STDIN) - 缺省为键盘2. 标准输出(STDOUT) - 默认 ...

  5. Java的线程状态

    在我们平时写code的时候,经常会使用到多线程.其中线程所处的状态就是我们需要进程思考的问题. 线程有哪些状态 NEW: 一个线程刚被创建,但是没有被使用就是处于这个状态 RUNNABLE: 一个线程 ...

  6. 【微服务】- Nacos - 注册中心

    微服务 - 注册中心 - Nacos 生命不息,写作不止 继续踏上学习之路,学之分享笔记 总有一天我也能像各位大佬一样 一个有梦有戏的人 @怒放吧德德 分享学习心得,欢迎指正,大家一起学习成长! 上一 ...

  7. SEO知识点

    SEO中的长尾理论 长尾关键词就是包含关键信息,但是搜索量比较少的句子或词组. 每一个长尾关键词都可能会为网站带来流量.一般一个较大的网站,流量的主要来源可能都由长尾关键词构成,因为网站除了目标关键词 ...

  8. ELK 性能优化实践 ---总结篇

    版本及硬件配置 JDK:JDK1.8_171-b11 (64 位) ES集群:由3台16核32G的虚拟机部署 ES 集群,每个节点分配 20 G 堆内存 ELK版本:6.3.0 垃圾回收器:ES 默认 ...

  9. Redis核心设计原理(深入底层C源码)

    Redis 基本特性 1. 非关系型的键值对数据库,可以根据键以O(1) 的时间复杂度取出或插入关联值 2. Redis 的数据是存在内存中的 3. 键值对中键的类型可以是字符串,整型,浮点型等,且键 ...

  10. 支付宝沙箱服务 (结合springboot实现,这里对接的是easy版本,工具用的是IDEA,WebStrom)

    一:打开支付宝开发平台,登录,然后点击控制台 https://open.alipay.com/ 二:滚动到底部,选着沙箱服务 三:获取到对接要用的appId和公钥私钥 四:打开IDEA导入所需的xml ...