在Visual Studio2015中使用单元测试
所谓的单元测试(Unit Test),就是对软件的一些模块进行测试以检查其正确性和可靠性,这些模块可以是一个类或者是一个方法等。在Visual studio中,这十分容易实现。
打开Visual studio,文件->新建->项目,在此演示的是为通用Windows平台创建单元测试,因此展开Visual C#->Windows->通用->单元测试应用(通用Windows)。如图,

这里单元测试的项目名为UnitTest4Demo
创建完成后,为了使条理清晰,我们在解决方案中新建一个类库(ClassLibrary),将要测试的方法放在类库中,而UnitTest4Demo调用放在类库中的待测试方法。
右击解决方案->添加->新建项目->类库(通用Windows),如图

类库取名为ClassLibrary4Test
创建完成后,解决方案管理器里应类似下图

刚刚已经说了,类库里面放待测试方法,UnitTest4Demo负责调用并测试类库中的方法,因此UnitTest4Demo应引用ClassLibrary4Test。右击UnitTest4Demo下的引用->添加引用->勾选ClassLibrary4Test,如图

确定后,UnitTest4Demo下的引用应类似下图,注意:红线的部分就是刚刚添加的对类库的引用

现在,在类库ClassLirary4Test中的Class1.cs中写个方法,简单起见,就让这个方法返回个0
public class Class1
{
public static int ReturnZero()
{
return ;
}
}
接着,在UnitTest4Demo中UnitTest.cs中的TestMethod1方法中调用此函数,如图

在这个UnitTest1类中,第一点,我们注意到UnitTest1被添加了TestClass属性类,方法TestMethod1被添加了TestMethod属性类,这就是用来单元测试的类和函数与一般的类和函数不同之处,这就告诉了Visual Studio我这个函数是用来测试的,Visual Studio就会将这个带有TestClass属性的类下的,带有TestMethod属性的方法放到测试资源管理器中(测试资源管理器展开方法:菜单栏->测试->窗口->测试资源管理器)
第二点就是这个函数里面就写了一句话,Assert是用于单元测试“断言”的类,即我输入一些参数(当然此示例没有输入参数),如果方法运行正确我“断言”应得到的结果,如果不符,Visula studio在测试后会给出相关的信息,这就达到了测试的效果。当然这个类有很多的重载,参见MSDN:Assert类

我们会注意到,此时测试资源管理器空空如也,并没有TestMehod1方法,这是我们没有生成解决方法的原因,现在生成解决方案:菜单栏->生成->生成解决方案
生成之后,测试资源管理器中会出现TestMehod1方法,如图

下面执行测试,右击测试单元管理器中的TestMethod1->运行选定的测试
稍等片刻,将会出现通过测试。
至此,一个简单的单元测试完成了。
你可以在单元测试中测试更多,更复杂的方法,下面就展示一个稍微复杂一些的用于测试通用应用的网络通信的示例。
在ClassLibrary4Test类库中新建一个HttpHelper类,类中写个用于Get请求的方法。
public class HttpHelper
{
/// <summary>
/// Send Get request and retrieve the response as a string
/// </summary>
/// <param name="url">url</param>
/// <returns>response</returns>
public static async Task<string> SendGetRequest(string url)
{
HttpClient httpClient = new HttpClient();
Uri uri = new Uri(url);
HttpResponseMessage response = new HttpResponseMessage();
string httpResonseBody = string.Empty;
try
{
response = await httpClient.GetAsync(uri);
response.EnsureSuccessStatusCode();
httpResonseBody = await response.Content.ReadAsStringAsync();
}
catch
{ }
return httpResonseBody;
}
}
在UnitTest4Demo的UnitTest.cs中新写个方法TestMothod_Http,调用刚写的SendGetRequest方法。
[TestMethod]
public async Task TestMethod_Http()
{
string url = "http://mywebapidemo.azurewebsites.net/api/Default";
string response = await HttpHelper.SendGetRequest(url);
Assert.AreEqual("Hello,World!", response.Replace("\"", "")); }
生成解决方案,和刚刚一样,测试资源管理器中在生成会出现TestMethod_Http,测试之,可以顺利通过测试。

在Visual Studio2015中使用单元测试的更多相关文章
- Visual Studio 中的单元测试 UNIT TEST
原文:Visual Studio 中的单元测试 UNIT TEST 注:本文系作者原创,可随意转载,但请注明出处.如实在不愿注明可留空,强烈反对更改原创出处.TDD(Test-Driven Devel ...
- Visual Studio中UnitTesting单元测试模板代码生成
在软件研发过程中,单元测试的重要性直接影响软件质量.经验表明一个尽责的单元测试方法将会在软件开发的某个阶段发现很多的Bug,并且修改它们的成本也很低.在软件开发的后期阶段,Bug的发 ...
- visual studio2015中开发python
之前下载了visual studio2017但是发现很不好用,不如使用matlab与visual studio混合编程就根本找不到visual studio,只有下了visual studio2015 ...
- visual studio中创建单元测试
1 打开 工具--自定义 2 选择 上下文菜单--编辑器上下文菜单|代码窗口 3 在这里我们可以看到“创建单元测试”这个菜单了,将它移到运行测试菜单下面 4 关闭VS并重启 重启后再对着类名,点击右 ...
- 在visual studio2015中使用easyX画图
配置:解压EasyX压缩包: 将文件内的include,lib,lib/amd64下的文件拷贝到visualstudio中VC文件夹内对应的地方: 然后再执行上图中的Setup.hta进行安装: 在v ...
- Python 在Visual studio 中做单元测试进行TDD开发
Unit Tests Steve Dower edited this page on 14 Jul · 3 revisions Pages 38 Home Azure Remote Debugging ...
- Visual Studio2015 、2017中如何支持MYSQL数据源
原文:Visual Studio2015 .2017中如何支持MYSQL数据源 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/ght886/arti ...
- .net持续集成单元测试篇之单元测试简介以及在visual studio中配置Nunit使用环境
系列目录 单元测试及测试驱动开发简介 什么是单元测试 单元测试是一段自动化的代码,这段代码调用被测试的工作单元,之后对这个单元的单个最终结果的某些假设进行检验.单元测试几乎都是用单元测试框架编写的.单 ...
- Visual Studio2015安装过程以及单元测试
安装环境: 安装版本: Visual Studio2015 安装过程: 因为我是在第一次老师安排的作业的时候感觉VC++6.0不如VS方便所以才装的Visual Studio2015,又安装了点插件, ...
随机推荐
- 【Material Design视觉设计语言】开篇
作者:郭孝星 微博:郭孝星的新浪微博 邮箱:allenwells@163.com 博客:http://blog.csdn.net/allenwells Github:https://github.co ...
- 使用OTP原则构建一个非阻塞的TCP服务器
http://erlangcentral.org/wiki/index.php/Building_a_Non-blocking_TCP_server_using_OTP_principles CONT ...
- 【t071】最长路
Time Limit: 1 second Memory Limit: 128 MB [问题描述] 设G为有n个顶点的有向无环图,G中各顶点的编号为1到n.设w[i,j]为边的长度.请计算图G中从1到n ...
- 10 个免费的 C/C++ 集成开发环境
集成开发环境(IDE)可以给程序员提供很大的帮助.大多数的IDE包含编译器和解释器.例如微软的 Visual Studio 本身内置的编译器和解释就是很好的例子,Eclipse 是另一个很好的例子.鼓 ...
- angular中通过$location获取路径(参数)的写法
以下获取与修改的 URL 以 ( http://172.16.0.88:8100/#/homePage?id=10&a=100 ) 为例 [一]获取 (不修改URL) //1.获取当前完整 ...
- Netty In Action中文版 - 第六章:ChannelHandler
本章介绍 ChannelPipeline ChannelHandlerContext ChannelHandler Inbound vs outbound(入站和出站) 接受连接或创建他们仅仅是你的应 ...
- python实现身份证校验位计算
身份证校验码的计算方法 1.将前面的身份证号码17位数分别乘以不同的系数.第i位对应的数为[2^(18-i)]mod11.从第一位到第十七位的系数分别为:7 9 10 5 8 4 2 1 6 3 7 ...
- BS学习概述
从最初的牛腩新闻公布系统,到如今的JS,回想一下,自己的BS也算是学了大半,可是有时候想起来还是总是有一种不踏实的感觉,一是由于从开学到如今赶上了三级考试,自考.软考,导致BS学习时间被大大压缩了,代 ...
- 将python3.1+pyqt4打包成exe
将python打包成exe的程序有很多,比如py2exe.PyInstaller等等,但是到目前为止,它们对python3.1支持的都不好,所以这里我要介绍一下cx_freeze 4.2.2,它还能支 ...
- JSON的一些要点总结 专题
JavaScript Object Notation CSRF (pronounced sea-surf) 字面量(literal):字符串的意思和要表达的意思是一致的 JSON 是一种数据交换格式( ...