VSTS写单元测试
用VSTS写单元测试
许多应用程序都会用到“用户”类型,今天我要用的是ConsoleApplication1名字
1.打开VS2013 --> 新建一个项目。这里我们默认创建一个控制台项目。取名为ConsoleApplication1
2.在解决方案里面新增一个单元测试项目。取名为默认ConsoleApplication1
创建完毕后项目结构大概如下:

3.进入控制台项目UnitTestDemo的Program类库,创建一个Add方 UnitTestDemo
{
public class User
{
public void User(string userEmail)
{
m_emaile=userEmaile;
}
private string m_emaile ;//user emaile as user as user id
}
}
4.我们的出现“New Test Project”弹窗,目的就是单元测试方法运行。
5.在单元测试项目后,注意到中,出现三个新的文,引用控制台项目,引用完毕后项目结构如下:

6.单元测试项目里面UnitTest1这个类的名字取得太难看了,我们把名字改为ProgramTest,表明这是在测试Program类。改完如下:
using System;
using Microsoft.VisualStudio.TestTools.UnitTesting; namespace UnitTestDemoTest
{
[TestClass]
public class ProgramTest
{
[TestMethod]
public void TestMethod1()
{
}
}
}
7.一个好的测试方法。应该在最基本的功能,参数上验证程序的正确性,单元测试应该测试最基本的单元,在此基础上,可以测试一些系统中最基本的功能点。
系统中最基本的功能点
8.可以这样理解,一个方法必须具有TestMethod特性,且其所属的类具有TestClass特性,那么这个方法才会被VS承认为一个单元测试方法。
如果没有上面的两个特性中的一个,编译生成是没有任何问题的。但是VS不会把其作为一个单元测试方法。
9.依次点击VS的菜单栏测试--> 窗口-->测试资源管理器,可以打开测试资源管理器。

10.测试资源管理器里面会显示当前解决方案里面的所有单元测试。说明白点就是这里只显示符合要求的方法。
你可能会说,为什么上面的图里面什么都没显示,TestMethod特性和TestClass特性现在不是都有吗?
原因是你还没有生成程序集就可以看到测试资源管理器中显示了TestMethod1:

11.我们要清楚我们创建单元测试的初衷:是用工具帮助我们测试软件的质量、稳定性、性能等等。VS在这里就充当了工具的作用。
12.回到命名的问题,很明显TestMethod这个名字太难看了,我们把它改成AddTest表示这是在测试Add方法。
UnitTestDemoTest()
{
[TestClass]
public class ProgramTest
{
[TestMethod]
public void AddTest()
{
}
}
}
13.截止目前,我们已经建立了一个可以执行的测试框架,虽然没有起到什么作用,但是测试已经可以执行了。
执行测试的方法之一是:右键点击需要测试的【单元测试】方法的名称,选择运行:

运行测试之后,可以在测试资源管理器中查看测试的结果:
执行单元测试的方法有很多,这些需要我们在不断的学习中去体会。
14.接下来我们做一点有意义的事情。改进AddTest方法:
if(!m_email.Contains("@"))
{
throw new ArgumentException(); //抛
}
:
新建单元测试在解决方案上新建项目-》托管测试项目在需要进行c语言测试运行测试可以看到测试通过。

17.最后,注意在单元测试中,VSTS自动为我们生成了测试的骨架,如果还在使用***.Inconclusive。表明这是个未经测试的。详情参考如上。
VSTS写单元测试的更多相关文章
- 使用VSTS进行单元测试练习
本次作业要求:练习教科书第22~25页单元测试练习,要求自行安装Visual Studio开发平台,版本至少在2010以上,要求把程序安装过程和练习过程写到博客上,越详细越好,要图文并茂,没有书的同学 ...
- 单元测试er——为什么真的真的要写单元测试
优点 为什么很多技术或者知识要说优点?因为有些道理看着很简单,大家表面上都觉得对,但是做的时候又不去做或者做不到.其中有一个很重要原因是骨子里或者潜意识并没有真实觉得这是对的,一旦想去做的时候同时会冒 ...
- 为什么从前那些.NET开发者都不写单元测试呢?
楔子 四年前我虽然也写了很多年代码,由于公司虽然规模不小,却并非一家规范化的软件公司,因此在项目中严格意义上来说并没有架构设计.也不写单元测试,后来有幸加入了一家公司,这家公司虽然也是一家小公司,但是 ...
- 如何为 Vue 项目写单元测试
https://www.w3ctech.com/topic/2052 如何为 Vue 项目写单元测试 前端工程 明非 2017-07-18 4685 访问 1 分享 微信分享 译者:明非 链接:htt ...
- 为什么不针对internal接口写单元测试?
测试驱动的开发(TDD,Test Driven Development)的核心理念,是要使得重构(refactoring)更为有效,而不是创建更多的测试. 对一个有着长生命周期的项目来讲,在它的第一个 ...
- 【快学springboot】在springboot中写单元测试[Happyjava]
前言 很多公司都有写单元测试的硬性要求,在提交代码的时候,如果单测通不过或者说单元测试各种覆盖率不达标,会被拒绝合并代码.写单元测试,也是保证代码质量的一种方式. junit单元测试 相信绝大多数的J ...
- 【快学springboot】在springboot中写单元测试
前言 很多公司都有写单元测试的硬性要求,在提交代码的时候,如果单测通不过或者说单元测试各种覆盖率不达标,会被拒绝合并代码.写单元测试,也是保证代码质量的一种方式. junit单元测试 相信绝大多数的J ...
- 如何用googletest写单元测试
http://www.uml.org.cn/c++/201203293.asp googletest是一个用来写C++单元测试的框架,它是跨平台的,可应用在windows.linux.Mac等OS平台 ...
- 用Grails写单元测试
新的领域,多练练,这样写出的程序,确实坚固些. 也要理解集成测试与数据库相关,单元测试与类方法有关. 如果测试文件没有建立,按如下操作: Unit tests are generated automa ...
随机推荐
- Concurrent包学习之 BlockingQueue源码学习
上一篇学习了ExecutorService和其它相关类的源码,本篇要学习的BlockingQueue中的源码,as always,先上类图 其实继承(实现)的层次比较简单,我们只要需要先学习一下Blo ...
- BZOJ4766:文艺计算姬(矩阵树定理)
Description "奋战三星期,造台计算机".小W响应号召,花了三星期造了台文艺计算姬.文艺计算姬比普通计算机有更多的艺术细胞. 普通计算机能计算一个带标号完全图的生成树个数 ...
- Node.js实战(六)之Npm
NPM是随同NodeJS一起安装的包管理工具,能解决NodeJS代码部署上的很多问题,常见的使用场景有以下几种: 允许用户从NPM服务器下载别人编写的第三方包到本地使用. 允许用户从NPM服务器下载并 ...
- 数据同步canal客户端
1.增量订阅.消费设计 get/ack/rollback协议介绍: ① Message getWithoutAck(int batchSize),允许指定batchSize,一次可以获取多条,每次返回 ...
- 《MySQL:菜鸟入门系列》
关于数据库相关知识,几乎是互联网从业者逃不开的一个必备技能,特别是对于DB.开发和测试童鞋来说,更显得重要... 关于MySQL,推荐如下几本书: 入门级:<MySQL必知必会> 进阶级: ...
- 突然的明白--public static 类名 函数名()
public static ImageUtilEngine getImageEngine() { return imageEngine; } 这个是什么啊........纠结了一个多星期的东西 忽然间 ...
- 20155216 Exp4 恶意代码分析
20155216 Exp4 恶意代码分析 实践内容 使用schtasks指令监控系统运行 先在C盘目录下建立一个netstatlog.bat文件和netstatlog.txt文件,将记录的联网结果格式 ...
- POJ 1789&&2485&&1258&&3026
这个真的太水了——MST专辑. 如果不会MST的两种算法的同学可以出门右转了. 大致讲一下,第一题我是用Prim+堆优化的(毕竟点比较多),后面三题用的是Kruskal(习惯打,而且并查集常数实在小) ...
- mfc CListCtrl
了解CListCtrl属性 了解CListCtrl常用成员函数 代码示例 一.CListCtrl常用属性 View:视图方式;.大(标准)图标2.小图标3.列表4.报表 Sort:排序; No Scr ...
- python 回溯法 子集树模板 系列 —— 2、迷宫问题
问题 给定一个迷宫,入口已知.问是否有路径从入口到出口,若有则输出一条这样的路径.注意移动可以从上.下.左.右.上左.上右.下左.下右八个方向进行.迷宫输入0表示可走,输入1表示墙.为方便起见,用1将 ...