在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,又安装了点插件, ...
随机推荐
- 【9602】&&【b402】合并果子
Time Limit: 1 second Memory Limit: 50 MB [问题描述] 在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆.多多决定把所有的果子合成 ...
- ZooKeeper 分布式锁实现原理
原理 进程需要访问共享数据时, 就在"/locks"节点下创建一个sequence类型的子节点, 称为thisPath. 当thisPath在所有子节点中最小时, 说明该进程获得了 ...
- 【codeforces 777A】Shell Game
[题目链接]:http://codeforces.com/contest/777/problem/A [题意] 奇数次操作交换1,2位置的东西; 偶数此操作交换2,3位置的东西 给你操作的次数,和最后 ...
- 人生不过一个字【Life is but a word】
有人说,人生是一出悲悲喜喜的戏,是一首飘飘忽忽的歌,是一次上去又下来的登山运动,是一场明明灭灭的烟花……是的,有道理,但听起来,太玄虚:悟起来,太深远:做起来,太复杂. 我说 ...
- 用java写的后台方法可以提供给C#调用吗?(转)
最近和公司搞C#的同事联合搞了一个项目,我把我这边的数据加密之后传给C#,然后C#在对接收到的数据解密.可是问题来了,我这边用JAVA加密的数据C#的同事怎么也解密不出来,于是我就想到了可不可以将JA ...
- TBB、OpenCV混合编程
TBB提供了Parallel_for.Parallel_do.Parallel_reduce等通用并行算法,可以应用在不同的并行算法场合,Parallel_for适合用在多个数据或请求之间彼此没有依赖 ...
- HTC VIVE 虚拟现实眼镜VR游戏体验
HTC的VIVE入手一段时间了,体验了几个免费的VR游戏,效果还不错,分享一下. 1. VIVE主要部件 VIVE的主要部件有3个,分别是头盔,两个无线控制手柄和两个定位器. 1.1 头盔 头盔整体照 ...
- eclipse中JUnit工具的使用
- Codeforces 15C Industrial Nim 简单的游戏
主题链接:点击打开链接 意甲冠军: 特定n 下列n行,每一行2的数量u v 表达v礧:u,u+1,u+2···u+v-1 问先手必胜还是后手必胜 思路: 首先依据Nim的博弈结论 把全部数都异或一下, ...
- 张量(tensor)的理解
1. 从标量到矢量:携带更丰富的信息 矢,是箭的意思,突出的特点是其指向性. 袋子里有几个球? 3 个,magnitude(幅度,没有单位): 从这到你家多远?3 km(denominate),3 称 ...