所谓的单元测试(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中使用单元测试的更多相关文章

  1. Visual Studio 中的单元测试 UNIT TEST

    原文:Visual Studio 中的单元测试 UNIT TEST 注:本文系作者原创,可随意转载,但请注明出处.如实在不愿注明可留空,强烈反对更改原创出处.TDD(Test-Driven Devel ...

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

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

  3. visual studio2015中开发python

    之前下载了visual studio2017但是发现很不好用,不如使用matlab与visual studio混合编程就根本找不到visual studio,只有下了visual studio2015 ...

  4. visual studio中创建单元测试

    1 打开  工具--自定义 2 选择 上下文菜单--编辑器上下文菜单|代码窗口 3 在这里我们可以看到“创建单元测试”这个菜单了,将它移到运行测试菜单下面 4 关闭VS并重启 重启后再对着类名,点击右 ...

  5. 在visual studio2015中使用easyX画图

    配置:解压EasyX压缩包: 将文件内的include,lib,lib/amd64下的文件拷贝到visualstudio中VC文件夹内对应的地方: 然后再执行上图中的Setup.hta进行安装: 在v ...

  6. Python 在Visual studio 中做单元测试进行TDD开发

    Unit Tests Steve Dower edited this page on 14 Jul · 3 revisions Pages 38 Home Azure Remote Debugging ...

  7. Visual Studio2015 、2017中如何支持MYSQL数据源

    原文:Visual Studio2015 .2017中如何支持MYSQL数据源 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/ght886/arti ...

  8. .net持续集成单元测试篇之单元测试简介以及在visual studio中配置Nunit使用环境

    系列目录 单元测试及测试驱动开发简介 什么是单元测试 单元测试是一段自动化的代码,这段代码调用被测试的工作单元,之后对这个单元的单个最终结果的某些假设进行检验.单元测试几乎都是用单元测试框架编写的.单 ...

  9. Visual Studio2015安装过程以及单元测试

    安装环境: 安装版本: Visual Studio2015 安装过程: 因为我是在第一次老师安排的作业的时候感觉VC++6.0不如VS方便所以才装的Visual Studio2015,又安装了点插件, ...

随机推荐

  1. Java设计模式菜鸟系列(二十二)中介者模式建模与实现

    转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/40027109 中介者模式(Mediator):主要用来减少类与类之间的耦合的,由于假设类与 ...

  2. Xor - Trie树

    题目描述 求一棵带边权的树的一条最大 Xor 路径的值.这里的"路径"不一定从根到叶子结点,中间一段路径只要满足条件也可以. 输入格式 第一行,一个整数 N ,表示一颗树有 N 个 ...

  3. boost::any在降低模块之间耦合性的应用

    作者:朱金灿 来源:http://blog.csdn.net/clever101 在开发大型系统中,遵循这样一个原则:模块之间低耦合,模块内高内聚.比如系统中模块有界面模块和算法模块两种,一般是界面模 ...

  4. Arcgis api for javascript学习笔记(4.5版本) - 本地部署及代理配置

    在开发过程中,由于api的文件比较多,没必要每个项目都将api加入到解决方案中.况且在VS中如果将api加入解决方案,在编写css或js代码时,由于智能提示需要扫描脚本等文件,会导致VS很卡.所以个人 ...

  5. angular中通过$location获取路径(参数)的写法

    以下获取与修改的 URL 以  ( http://172.16.0.88:8100/#/homePage?id=10&a=100  ) 为例 [一]获取 (不修改URL) //1.获取当前完整 ...

  6. C# WPF MVVM QQ密码管家项目(8,完结篇:自动输入QQ号、密码)

    原文:C# WPF MVVM QQ密码管家项目(8,完结篇:自动输入QQ号.密码) 目录: 1,界面设计 2,数据模型的建立与数据绑定 3,添加QQ数据 4,修改QQ数据 5,删除QQ数据 6,密码选 ...

  7. Java文件运用

    1.使用java修改文件内容: package fileopt; import java.io.BufferedReader; import java.io.BufferedWriter; impor ...

  8. .net core下,Ocelot网关与Spring Cloud Gateway网关的对比测试

    有感于 myzony 发布的 针对 Ocelot 网关的性能测试 ,并且公司下一步也需要对.net和java的应用做一定的整合,于是对Ocelot网关.Spring Cloud Gateway网关做个 ...

  9. c#开发移动APP-Xamarin入门扩展

    原文:c#开发移动APP-Xamarin入门扩展 这节主要演示了如何通过添加第二个屏幕来跟踪应用程序的call历史来扩展Phoneword应用程序.最终如下: 按如下步骤扩展Phoneword 在Ph ...

  10. 倒计时的CountDownTimer

    直接看这里吧,我仅仅是搬运工.  定时运行在一段时候后停止的倒计时,在倒计时运行过程中会在固定间隔时间得到通知(译者:触发onTick方法),以下的样例显示在一个文本框中显示一个30s倒计时: , 1 ...