使用Visual Studio 2013进行单元测试--初级篇

原文:使用Visual Studio 2013进行单元测试--初级篇

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.最后希望大家养成随时测试代码的好习惯。

 

 

转载声明:欢迎转载,但请保留原文链接。

友情链接:http://www.zhoumy.cn

时间: 2024-10-04 11:13:07

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

Visual Studio 2013引入联网IDE体验 自动同步设备

近日,Visual Studio 2013以 Visual Studio 2012 和后续的 Visual Studio 更新中的进展为基础构建而成,为开发团队提供需要的解决方案,使其接纳这种转变并开发和交付利用下一波 Windows 平台创新 (Windows 8.1) 的新式应用程序,同时在所有 Microsoft 平台上支持多种设备和服务.设备和服务体验有了根本性的变革,改变了行业对软件开发的处理方式.消费者.客户和员工现在需要一种全新的应用程序.他们要求应用程序在多种屏幕和设备上提供最佳

微软正式发布Visual Studio 2013 Update 3 (2013.3) RTM

昨天微软的Visual Studio 2013 Update 3(Visual Studio 2013.3)正式发布(RTM)了,做为微软认证金牌合作的葡萄城控件,我们组织力量第一时间进行翻译.分享给大家: 下载 Visual Studio 2013 Update 3 此更新程序是最新的一个累加了新功能和错误修复的Visual Studio2013,您可以从以下链接获得Visual Studio2013和Team Foundation Server 2013: Download Visual S

怎么在 Visual Studio 2013 上使用 Github

介绍 我承认越是能将事情变简单的工具我越会更多地使用它.尽管我已经知道了足够的命令来使用Github,但我宁愿它被集成到IDE中.在本教程中,我会告诉你使用Visual Studio 2013如何实现. 首先创建一个任意类型的项目.在我的例子中,我创建了一个新的Windows Phone 8应用.重述一遍,这无关紧要.按如下显示选择"文件">"添加到源码控制". 你会看到一个在TFS和Git间选择的选项.选择"Git"并勾选"以后

一个奇怪的Visual Studio 2013停止响应问题

昨天开始遭遇这个问题,今天再次遭遇. 疑似问题发生在写代码的窗口中复制/粘贴时(有待进一步确认触发条件),突然停止响应,出现下面的对话框: 对话框中的文字为: Waiting for a required operation to complete. This dialog will close when the operation completes. 过了一段时间,该对话框消失,VS2013左下角的状态栏显示下面的状态: 更多精彩内容:http://www.bianceng.cnhttp:/

Visual Studio 2013 RC1新功能

尽管微软仍未宣布Visual Studio 2013最终版本的发布日期,但是MSDN和TechNet订户们已经在今天早些时候拿到了期待已久的Windows 8.1 RTM.不过,微软也没有忘记VS 2013,并且随着Win 8.1 RTM一道,正式推出了Visual Studio 2013的候选发布版本.但据报道,该RC版本其实几天前就已经被泄露到互联网上了. 在Visual Studio博客上,微软开发部门总裁Somasegar写到:RC中迎来了Cloud Business App模板,将使得

利用 Visual Studio 2013 进行跨浏览器、编码 UI 测试

在过去几年中,基于 Web 的解决方案为全世界用户提供便利的访问,因而非常受欢迎.用户喜欢它们的另一个原因是它们的方便性.用户无需安装单独的应用程序:仅凭浏览器就能从任何连接 Internet 的设备连接自己的帐户.但是,从软件开发者和测试者的角度看,用户可以选择任何 Web 浏览器会带来这样一个问题:解决方案必须经过多种浏览器的测试.本文将介绍如何通过简单的方法解决这个问题,即只使用 C# 创建任何新型浏览器都可以执行的编码 UI 测试用例. 新 Visual Studio 几年前,当 Vis

使用Visual Studio 2013构建Office 365云业务应用程序

当前,对业务应用程序的要求.期望及其重要性达到了前所未有的高度.现代业务应用程序需要访问组织 内部与外部可用的数据.它们需要连接组织内不同的个人,帮助他们以丰富有趣的方式相互协作.应用程序 本身需要能够在多种外形的多种设备上使用,如屏幕尺寸各不相同的智能手机.平板电脑.便携式计算机和 台式机. 您需要一个平台提供一系列服务来满足这些应用程序的核心要求.您还需要一个工具集,以便高效构建这 些应用程序,并在组织内与现有开发运营流程集成. 本文将介绍 Visual Studio 2013 如何帮助您构

Visual Studio 2013的新功能

微软在其官方博客撰文描述了在VS 2013中提升开发人员生产力的一些新功能.文章称:"在VS 2013中,我们引入了新的功能,节省了在编辑器内工作的时间.还提高了生产力.这些新功能和一些最流行的生产力工具集,来自于用户们通过User Voice请求.论坛帖子.以及Connect bugs的热心反馈.MVP社区还帮助我们做出了筛选". 编码的时候,你可以轻松地在Editor编辑器中使用Peek Definition查看定义内联(definitions inline),而无需打开一个新的文

Visual Studio 2013新功能:增加代码的透明度和可追溯性

微软打破了Visual Studio两年升级一次的传统,Visual Studio 2012发布还不足一年,微软就计划发布了Visual Studio 2013了.在今天的TechEd大会上,微软宣布,6月底的BUILD全球开发者大会上,大家不仅能见到Windows 8.1的预览版,还能下载到Visual Studio 2013和Team Foundation Server 2013的预览版. Visual Studio 2013的新功能太多了,我们挑几个说一说.VS2013中,开发人员可以具体