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

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

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. KingbaseES R3集群在线删除数据节点案例

    案例说明: kingbaseES R3集群一主多从的架构,一般有两个节点是集群的管理节点,所有的节点都可以为数据节点:对于非管理节点的数据节点可以在线删除:但是对于管理节点,无法在线删除,如果删除管理 ...

  2. 使用『jQuery』『原生js』制作一个选项卡盒子 —— { }

    效果 HTML 部分 <body> <div id="main-box"> <div id="left-nav"></ ...

  3. Java 热更新 Groovy 实践及踩坑指南

    Groovy 是什么? Apache的Groovy是Java平台上设计的面向对象编程语言.这门动态语言拥有类似Python.Ruby和Smalltalk中的一些特性,可以作为Java平台的脚本语言使用 ...

  4. Redis变慢?深入浅出Redis性能诊断系列文章(一)

    (本文首发于"数据库架构师"公号,订阅"数据库架构师"公号,一起学习数据库技术)   Redis 作为一款业内使用率最高的内存数据库,其拥有非常高的性能,单节点 ...

  5. Docker安装MySQL并使用Navicat连接

    MySQL简单介绍: MySQL 是一个开放源码的关系数据库管理系统,开发者为瑞典 MySQL AB 公司.目前 MySQL 被广泛地应用在 Internet 上的大中小型网站中.由于其体积小.速度快 ...

  6. day03-3私聊功能

    多用户即时通讯系统03 4.编码实现02 4.4功能实现-私聊功能实现 4.4.1思路分析 客户端 - 发送者: 用户在控制台输入信息,客户端接收内容 将消息构建成Messgae对象,通过对应的soc ...

  7. ProxySQL结构

    Qurey Processor 用于匹配查询规则并根据规则决定是否缓存查询或者将查询加入黑名单或者重新路由.重写查询或者镜像查询到其他hostgroup. User Auth 为底层后端数据库认证提供 ...

  8. Traefik开启监控,日志,追踪需要的参数

    监控 官方文档地址:https://doc.traefik.io/traefik/observability/metrics/overview/ 可以使用多种监控软件,比如Datadog,Influx ...

  9. cAdvisor容器监控规则

    其他说明参考host主机监控规则:https://www.cnblogs.com/sanduzxcvbnm/p/13589848.html 在prometheus主程序目录下的rules目录下新建do ...

  10. 基于python的RSA解密算法

    摘要 网上有很多关于RSA的解密脚本,欧拉函数.欧几里得函数什么的,对于一个大专生的我来说,一窍不通,至此经历了三天三夜,我翻阅了RSA的加密原理,以及其底层算法,专研出了一套我自己的解密算法,尚有不 ...