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 ...
随机推荐
- Windows Powershell安装错误
今天需要更新一下VMware的 powercli.使用命令install-module -Name VMware.PowerCLI -AllowClobber但是遇到一个错误. Unable to r ...
- Java SE Object类
1.Object类 equals 方法 == 和 equals 的对比 == 是一个比较运算符 == 既可以判断基本类型,又可以判断引用类型 == 如果判断的是基本类型,判断的是值是否相等 == 如果 ...
- 车辆稳定性辅助(VSA)系统
当车辆转弯大于或小于预期时,VSA有助于在转弯时稳定车辆. 同时还有助于在湿滑路面上保持牵引力. VSA 打开和关闭 禁用: 请长按按钮直至听到哔的一声.VSA 关闭指示灯点亮. 恢复: 按下按钮直至 ...
- 使用Receiver接收告警信息
告警接收器可以通过以下形式进行配置: receivers: - <receiver> ... 每一个receiver具有一个全局唯一的名称,并且对应一个或者多个通知方式: name: &l ...
- 03_配置Java环境变量
配置Java环境变量 右键我的电脑-属性-高级系统设置-环境变量 系统变量-新建-变量名JAVA_HOME,变量值为JDK安装路径 系统变量-新建-变量名CLASSPATH,变量值为英文输入法下的. ...
- 聊一聊被 .NET程序员 遗忘的 COM 组件
一:背景 1.讲故事 最近遇到了好几起和 COM 相关的Dump,由于对 COM 整体运作不是很了解,所以分析此类dump还是比较头疼的,比如下面这个经典的 COM 调用栈. 0:044> ~~ ...
- MinGW配置C语言编译器gcc和g++
首先,在 https://sourceforge.net/projects/mingw/files/latest/download 下载安装MinGW,如下图所示: 点Installation-> ...
- NAS数据存储之NFS搭建和使用
NFS是主流异构平台的共享文件系统之一,能够支持在不同类型的系统之间通过网络进行文件共享,允许一个系统在网络上与他人共享目录和文件.NFS传输协议用于服务器和客户机之间的文件访问和共享通信,从而使客户 ...
- node.js:《接口实现文件的上传和下载》
使用node.js写上传文件和下载文件的接口 上传接口: 开始写接口前,我们先安装一个上传文件的插件:npm install multer 安装成功在package.json或package-lock ...
- 十、RHEL Podman命令
Podman介绍 Podman 是一个开源的容器运行时项目,可在大多数 Linux 平台上使用.Podman 提供与 Docker 非常相似的功能.正如前面提到的那样,它不需要在你的系统上运行任何守护 ...