Visual Studio 号称有史以来最强大的IDE,确实如此。创建单元测试也是一键完成:在方法的代码块中右键“Create Unit Test…”,勾选测试项,填项目名,完成。VS就会自动帮你创建好了一个工程,直接写测试方法就好。这创建出来的工程也就是一个普通的类库(class library),所以今天我就打算手动创建一个单元测试工程,但是最后却发现总是无法显示代码覆盖率。

发现问题,解决问题:反复对比手动创建和自动创建的工程,所有的属性都没区别。但是有一点引起了我的注意,右键工程名-Add,区别出来了:

自动创建的Unit Test类库好像被打上了标签,能够被VS识别为单元测试工程。但是所有的工程属性对比后都一样,然后我就想到了另外一个文件.csproj,看这个后缀名就知道这个文件的作用了:C Sharp Project,用来记录工程项目的一些信息。对比这两个项目的.csproj文件就能找出来差别了,自动创建的单元测试工程多了一条标签:

 1 <PropertyGroup>

 2 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>

 3 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>

 4 <ProductVersion>8.0.30729</ProductVersion>

 5 <SchemaVersion>2.0</SchemaVersion>

 6 <ProjectGuid>{4D38A077-23EE-4E9F-876A-43C33433FFEB}</ProjectGuid>

 7 <OutputType>Library</OutputType>

 8 <AppDesignerFolder>Properties</AppDesignerFolder>

 9 <RootNamespace>Example.ManualUnitTest</RootNamespace>

 <AssemblyName>Example.ManualUnitTest</AssemblyName>

 <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>

 <FileAlignment>512</FileAlignment>

 <ProjectTypeGuids>{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>

 </PropertyGroup>

多了ProjectTypeGuids这个标签,查了资料两个guid分别对应的是:

  • Guid {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}:  C# project
  • Guid {3AC096D0-A1C2-E12C-1390-A8335801FDAB}: “Test Project Flavor”

这样子VS就能识别出这个项目是个Test Project了。如果是VB.net工程的话,第一个GUID就要换成{F184B08F-C81C-45F6-A57F-5ABD9991F28F}。

这个解决了代码覆盖率就正常了。

这里记录一下手动创建单元测试工程的步骤,以备日后查阅:

  1. 创建一个“Class Library”工程,添加Microsoft.VisualStudio.QualityTools.UnitTestFramework引用,和需要测试工程的应用
  2. 右键新建的工程-“Unload Project”;卸载了之后,再右键-“Edit xxxx.csproj”;在第一个ProjectGroup标签中加入<ProjectTypeGuids>{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>;保存之后就可以右键工程-“Reload Project”
  3. 右键Solution,创建新项,选择Test Setting,确定之后在弹出来的窗口按如下配置:(如果solution中已有Local.testsettings文件就不需要创建了,直接双击)

    点击config,选择需要测试工程的dll就可以了。

  4. 在VS菜单栏中选择Test-Windows-Code Coverage Results
  5. 完成,可以开始编写单元测试了

手动创建VS单元测试,显示代码覆盖率的更多相关文章

  1. Java开发工具IntelliJ IDEA单元测试和代码覆盖率图解

    原文 http://www.cnblogs.com/xiongmaopanda/p/3314660.html Java开发工具IntelliJ IDEA使用教程:单元测试和代码覆盖率 本文将展示如何使 ...

  2. Jenkins构建Android项目持续集成之单元测试及代码覆盖率

    单元测试 在软件开发中一直在推崇TDD(测试驱动开发),但是一直不能被有效的执行或者并不是真正的测试驱动开发(先开发后写单元测试),因为我们懒!而Android开发又是大多应用层面的开发,很多都是和视 ...

  3. Maven快速入门(二)手动创建maven项目hellomaven

    之前讲过Maven介绍及环境搭建,介绍了maven的作用和如何搭建maven环境.接下来就以一个helloworld的例子来说一说如何创建maven项目以及maven项目的项目结构,最后讲maven如 ...

  4. java web(一) 使用sql标签库+tomcat+mysql手动创建一个jsp练习总结

    2016-09-0111:06:53                                     使用sql标签库+tomcat+mysql手动创建一个jsp 1. 1.1安装tomcat ...

  5. servlet和手动创建servlet,断点调试

    1.    什么是Servlet Servlet是一种用Java语言编写的Web应用组件 Servlet主要用于动态网页输出,扩展了Web服务器的功能 Servlet由Servlet容器进行管理 2. ...

  6. 如何在JavaScript中手动创建类数组对象

    前言 关于什么是js的类数组对象这里不再赘述.可以参考这个链接,还有这里. js中类数组对象很多,概念简单的讲就是看上去像数组,又不是数组,可以使用数字下标方式访问又没有数组方法. 例: argume ...

  7. ogre3D学习基础16 -- 手动创建实体(ManualObject)

    这一节练习一下手动创建实体,用到了对象(ManualObject) 第一,依然是模板 #include "ExampleApplication.h" class Example1 ...

  8. Laravel中我们登录服务器通过 Tinker 手动创建后台管理用户

    Laravel中我们可以登录到服务器通过 Tinker 手动创建后台用户 laravel中tinker命令的作用是用来调试laravel,可以打印变量或对象信息,显示函数代码,对数据库写入和查询数据. ...

  9. NetworkX系列教程(3)-手动创建graph

    小书匠Graph图论 不可否认,日常中我们使用最多的还是,使用自己的数据去手动创建自己的图形,而不是使用生成器,现从给graph添加点和边入手,讲解手动创建graph. 目录: 3.给graph添加节 ...

随机推荐

  1. poj 2195 Going Home

    /* 做网络流的题建图真的是太重要了! 本题是将人所在的位置和房子所在的位置建立边的联系,其中man到house这一条边的流量为 1, 费用为两者的距离 而方向边的流量为 0, 费用为正向边的相反数( ...

  2. 后端码农谈前端(CSS篇)第五课:CSS样式

    一.背景: CSS 允许应用纯色作为背景,也允许使用背景图像创建相当复杂的效果. 1.背景色 可以使用 background-color 属性为元素设置背景色.这个属性接受任何合法的颜色值. 例如: ...

  3. Web 前端开发精华文章集锦(jQuery、HTML5、CSS3)【系列十九】

    <Web 前端开发精华文章推荐>2013年第七期(总第十九期)和大家见面了.梦想天空博客关注 前端开发 技术,分享各种增强网站用户体验的 jQuery 插件,展示前沿的 HTML5 和 C ...

  4. Jackson序列化和反序列化Json数据完整示例

    Jackson序列化和反序列化Json数据 Web技术发展的今天,Json和XML已经成为了web数据的事实标准,然而这种格式化的数据手工解析又非常麻烦,软件工程界永远不缺少工具,每当有需求的时候就会 ...

  5. 解决AndroidADT自带Eclipse编辑器不能自动代码提示的问题。

    今天发现,我下载的AndroidADT开发套装中自带的Eclipse没有自动代码提示功能.通过参考http://blog.csdn.net/coolszy/article/details/724195 ...

  6. 12套有用的免费 PSD 格式 Android UI 素材

    在这里,我们向大家呈现一些有用的和免费的 Android 用户界面 PSD 素材.由于 Android 市场迅速增长,设计人员和开发人员正在寻找一些快速和容易的方法来创建 Android 友好的应用和 ...

  7. 50款免费 PSD 名片设计模板源文件下载《下篇》

    名片是陌生人之间建立联系的最便捷.最有效的工具.名片它可能是给你的客户留下正面的印象第一步,另一方面,名片是一个企业最重要和最符合成本效益的营销工具之一,尤其是对于刚刚起步的企业.这里收集了50款免费 ...

  8. 数据结构(C语言第2版)----时间复杂度和单链表

    马上要到校招了,复习下相关的基础知识. 时间复杂度是什么? 官方解释: 算法的执行时间需要依据算法所编制的程序在计算机上于运行时所消耗的时间来度量.在算法中可以使用基本的语句的执行次数作为算法的时间复 ...

  9. 【原创】Kakfa metrics包源代码分析

    这个包主要是与Kafka度量相关的. 一.KafkaTimer.scala 对代码块的运行进行计时.仅提供一个方法: timer——在运行传入函数f的同时为期计时 二.KafkaMetricsConf ...

  10. 再一个客户端设置多个git账号

    步骤一:用ssh-keygen命令生成一组新的id_rsa_new和id_rsa_new.pub. ssh-keygen -t rsa -C "new email" 平时我们都是直 ...