1.打开VS2013 --> 新建一个项目。这里我们默认创建一个控制台项目。取名为UnitTestDemo

2.在解决方案里面新增一个单元测试项目。取名为UnitTestDemoTest

创建完毕后项目结构大概如下:

3.进入控制台项目UnitTestDemo的Program类,创建一个Add方法。

namespace UnitTestDemo
{
class Program
{
static void Main(string[] args)
{
} public static int Add(int num1, int num2)
{
return num1 + num2;
}
}
}

4.我们的目的就是测试上面的Add方法运行是否正常,返回结果是否正确。

5.在单元测试项目中引用控制台项目,引用完毕后项目结构如下:

6.单元测试项目里面UnitTest1这个类的名字取得太难看了,我们把名字改为ProgramTest,表明这是在测试Program类。改完如下:

using System;
using Microsoft.VisualStudio.TestTools.UnitTesting; namespace UnitTestDemoTest
{
[TestClass]
public class ProgramTest
{
[TestMethod]
public void TestMethod1()
{
}
}
}

7.上面就是VS为ProgramTest类默认生成的方法。可以看到ProgramTest具有一个【TestClass】特性,表明这是一个测试类。TestMethod1具有一个【TestMethod】特性,表明这是一个测试方法。

8.可以这样理解,一个方法必须具有【TestMethod】特性,且其所属的类具有【TestClass】特性,那么这个方法才会被VS承认为一个【单元测试方法】。

如果没有上面的两个特性中的一个,编译生成是没有任何问题的。但是VS不会把其作为一个【单元测试方法】。

9.“VS不把一个方法作为【单元测试方法】”是什么意思呢?

依次点击VS的菜单栏【测试】--> 【窗口】-->【测试资源管理器】,可以打开测试资源管理器。

10.测试资源管理器里面会显示当前解决方案里面的所有单元测试。说明白点就是这里只显示符合【第8点】要求的方法。

你可能会说,为什么上面的图里面什么都没显示,【TestMethod】特性和TestClass】特性现在不是都有吗?

原因是你还没有生成程序集。OK,按F6.就可以看到【测试资源管理器】中显示了【TestMethod1】:

11.我们要清楚我们创建单元测试的初衷:是用工具帮助我们测试软件的质量、稳定性、性能等等。【VS】在这里就充当了工具的作用。

12.回到命名的问题,很明显TestMethod这个名字太难看了,我们把它改成AddTest表示这是在测试Add方法。

using System;
using Microsoft.VisualStudio.TestTools.UnitTesting; namespace UnitTestDemoTest
{
[TestClass]
public class ProgramTest
{
[TestMethod]
public void AddTest()
{
}
}
}

13.截止目前,我们已经建立了一个可以执行的测试框架,虽然没有起到什么作用,但是测试已经可以执行了。

执行测试的方法之一是:右键点击需要测试的【单元测试】方法的名称,选择运行:

运行测试之后,可以在测试资源管理器中查看测试的结果:

执行单元测试的方法有很多,这些需要我们在不断的学习中去体会。

14.接下来我们做一点有意义的事情。改进AddTest方法:

using System;
using Microsoft.VisualStudio.TestTools.UnitTesting; namespace UnitTestDemoTest
{
[TestClass]
public class ProgramTest
{
[TestMethod]
public void AddTest()
{
int num1 = 100;
int num2 = 200; Assert.AreEqual(Program.Add(num1, num2), 300);
}
}
}

在这之前,请把Program类的可见性改为internal或者Public。

?15.“Assert”之前没接触过单元测试的朋友,或者英语差点的可能不认识。上谷歌翻译:

清楚的看到,“Assert”的意思是“断言”。所以“Assert.AreEqual(Program.Add(num1, num2), 300);”这句话的意思就是:我断言“Program.Add(num1, num2)”的结果就是300。

而断言的正确与否只需要通过测试工具测试即可。如果测试通过说明此断言是正确的,反之就说明这个测试失败了。

断言有很多种,包括上面普通的Assert,还有字符串断言,集合断言等等。

16.ok,运行测试可以看到测试通过。

17.如果上面所说的你都明白,那么到这里为止,你可以自己编写简单的单元测试代码并执行测试了。

最后还有一个要说的就是,如果你觉得手动编写单元测试类和方法太麻烦,那么可以使用“Unit Test Generator”插件帮助你生成单元测试和方法。

这样你可以把重心偏到编写测试逻辑上。

“Unit Test Generator”可以通过VS菜单栏【工具】-->【扩展和更新】-->搜索““Unit Test Generator””取得。

18.安装“Unit Test Generator”需要重启VS。

在需要进行单元测试的类和方法上点击右键,如图操作(图中演示的是生成单元测试方法)

点击之后会弹出一个对话框,需要你配置一个名称的规则,配置好后点击ok即可生成测试方法。

19.最后希望大家养成随时测试代码的好习惯。

使用Visual Studio 2013进行单元测试--初级篇的更多相关文章

  1. Visual Studio 2013进行单元测试

    使用Visual Studio 2013进行单元测试--初级篇   1.打开VS2013 --> 新建一个项目.这里我们默认创建一个控制台项目.取名为UnitTestDemo 2.在解决方案里面 ...

  2. 使用Visual Studio 2013进行单元测试

    使用Visual Studio 2013进行单元测试 1.打开VS2013 --> 新建一个项目.这里我们默认创建一个控制台项目.取名为UnitTestDemo 2.在解决方案里面新增一个单元测 ...

  3. 使用Visual Studio 2013进行单元测试的过程与感想

    首先是安装Visual Studio 2013这个软件,尽管安装过程不复杂,但是安装的时间实在是太长了,经过2个多小时的安装终于装完了. 由于时间紧凑,没来得及装语言包,于是,我用了原装的进行了单元测 ...

  4. Microsoft Visual Studio 2013 VSTS单元测试指南

    安装vs2013时并未安装VSTS工具包,所以在工具栏:工具->拓展和更新   进行下载安装 vs13已经用了两年了,相比于之前老师推荐的vc6.0感觉要强出很多,刚上手时感觉比较困难,在使用一 ...

  5. Visual Studio中UnitTesting单元测试模板代码生成

             在软件研发过程中,单元测试的重要性直接影响软件质量.经验表明一个尽责的单元测试方法将会在软件开发的某个阶段发现很多的Bug,并且修改它们的成本也很低.在软件开发的后期阶段,Bug的发 ...

  6. 安装和使用Visual Studio 2013并进行简单的单元测试

    现在我正在安装visual studio 2013,我听说好多同学都在安装visual studio 2015,但是他好像只支持Win10吧,我就退而求其次安装了visual studio 2013. ...

  7. 在Visual Studio 2013 中使用C++单元测试

    本文主要介绍在Visual Studio 2013中对代码进行单元测试的方法,包含了两方面的内容:对已有的Dll文件进行单元测试,以及对已有的源文件进行单元测试. 1. VS2013对DLL文件的单元 ...

  8. visual studio 2013的使用和单元测试

    Visual Studio 2013 是一个先进的开发解决方案,各种规模的团队通过它均可设计和创建引人注目的应用程序.Visual Studio 13在新功能包括C#和VB编译器和IDE支持完全基于. ...

  9. Visual Studio 2013安装及简单的单元测试

    Visual Studio 2013安装部分首先到观望下载了英文版和简体中文的语言包.但是更新语言包时总是失败,安装vs需要等待的时间也很大.后来重新装了一遍系统(这个卸载也很麻烦),从其他网站下了中 ...

随机推荐

  1. 把int放在一个char数组里(用于处理每一位数字)

    sprintf(): #include <stdio.h> void put_int_with_space(int v) {     char str[50];    //定义一个足够大的 ...

  2. VC++获取计算机Hardware Information (CPU ID, MainBoard Info, Hard Disk Serial, System Information)

    转载:http://blog.csdn.net/yapingxin/article/details/50107799 转载:http://zhidao.baidu.com/link?url=A5K6N ...

  3. Web的Ajax应用开发模式(一)——了解Ajax的使用形式

    寄语: 前天在查看一些公司的招聘要求时,看到有公司要求测试人员了解Ajax,故写此博文旨在帮助测试人员提高自身技术知识水平,愿与广大测试同胞共同进步.(欢迎纠错!!!) 图1: 图2:

  4. (1)编写一个接口:InterfaceA,只含有一个方法int method(int n); (2)编写一个类:ClassA来实现接口InterfaceA,实现int method(int n)接口方 法时,要求计算1到n的和; (3)编写另一个类:ClassB来实现接口InterfaceA,实现int method(int n)接口 方法时,要求计算n的阶乘(n!); (4)编写测试类E测试

    package a; public interface InterfaceA { int method(int n); } package a; public class ClassA impleme ...

  5. C#中获取程序集版本号的方法

    我的方法: string version = Assembly.GetExecutingAssembly().GetName().Version.ToString();   方法一: public v ...

  6. hdu 1869 (Floyd)

    http://acm.hdu.edu.cn/showproblem.php?pid=1869 六度分离 Time Limit: 5000/1000 MS (Java/Others)    Memory ...

  7. Servlet学习

    编写Servlet应该注意的一些细节: 1: 由于客户端是通过URL地址访问web服务器中的资源,所以Servlet程序若想被外界访问,必须把servlet程序映射到一个URL地址上,这个工作在web ...

  8. input与select 设置相同宽高,在浏览器上却显示不一致,不整齐

    遇到 input与select 设置相同宽高,在浏览器上却显示不一致,遂实验了下(IE 10.013 ,Firefox 30.0),得出以下结论 input   width,height 值里面, 不 ...

  9. javascript获取类元素

    代码测试是ie5+: 原生javascript中筛选出含有指定类的元素: 思想:在指定范围里把所有的元素筛选出来,然后把里面的每个元素都遍历找出它们含有的所有类,然后逐个元素遍历它们各自的类,如果指定 ...

  10. amd64_or_ia64?

    amd64 网上资料: 1. IA64是intel推出的架构,AMD64是AMD推出的.IA64不兼容原有的32位x86架构指令集,后来被证明这种做法是不成功的,于是Intel发展处IA64e架构,对 ...