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

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

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. 关于 JavaScript 中 null 的一切

    原文地址:Everything about null in JavaScript 原文作者:Dmitri Pavlutin 译者:Gopal JavaScript 有两种类型:原始类型(strings ...

  2. day38-IO流05

    JavaIO流05 4.常用的类04 4.4节点流和处理流03 4.4.8打印流-PrintStream和PrintWriter 打印流只有输出流,没有输入流 1.简单介绍及应用 PrintStrea ...

  3. Exchange如何将邮件转发给外部邮件地址

    Exchange如何将邮件转发给外部邮件地址 最近遇到一个需求.一位已经离职的员工需要将后续的邮件转发给他自己的私人邮箱.安全,行政的审核通过后,这个问题就到了技术部门了. Exchange可以很方便 ...

  4. (数据科学学习手札143)为geopandas添加gdb文件写出功能

    本文示例代码已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 大家好我是费老师,很多读者朋友跟随着我先前写作的 ...

  5. 使用logstash读取MySQL数据传输到es,并且@timestamp字段采用MySQL中的字段时间--建议采用这个

    MySQL中数据样式 ES中数据样式 input { jdbc { jdbc_connection_string => "jdbc:mysql://192.168.0.145:3306 ...

  6. MySQL 安装(二进制版)

    MySQL 的安装方式一般分为三种,二进制版本.编译版本.RPM 包.比较常见的是二进制版本安装,方便简单,相对于编译安装,如果不是追求极致性能,使用起来差别不大.本次教程以二进制版本为例,系统为 c ...

  7. 2020-2021 Winter Petrozavodsk Camp, Belarusian SU Contest (XXI Open Cup, Grand Prix of Belarus) 题解

    题目列表 C. Brave Seekers of Unicorns D. Bank Security Unification G. Biological Software Utilities I. B ...

  8. js移除style样式

    removeAttribute() 例: <button @click="edit" type="button" disabled id="bt ...

  9. Spring 深入——IoC 容器 01

    IoC容器的实现学习--01 目录 IoC容器的实现学习--01 简介 IoC 容器系列的设计与实现:BeanFactory 和 ApplicationContext BeanFactory load ...

  10. struts项目向前台返回图片。

    读取项目路径WebRoot下的图片 编写action package com.sadj.market.action; import java.io.BufferedInputStream; impor ...