Visual Studio 2012使用NUnit单元测试实践01,安装NUnit并使用
在Visual Studio 2012中,默认使用Microsoft自带的MS-Test测试框架。但,Visual Studio同样允许使用第三方测试框架,比如NUnit,xUnit,MbUnit,等等。本篇体验使用NUnit进行单元测试。
在Visual Studio中创建一个解决方案。
在解决方案下添加一个名称为"LogAn"的类库。
创建名称为LogAnalyzer的类,编写如下:
namespace LogAn{public class LogAnalyzer{public bool IsValidLogFileName(string fileName){if (!fileName.EndsWith(".SLF")){return false;}return true;}}}
生成"LogAn"的类库项目。
在解决方案下添加一个"单元测试项目"。
接下来需要安装"NUnit Test Adapter", "NUnit Test Adapter"是介于NUnit和Visual Studio之间的一个适配器。依次点击"工具"、"扩展和更新",从中搜索并安装"NUnit Test Adapter"。
安装完毕,需要重启Visual Studio 2012。
在单元测试项目下,通过NuGet安装NUnit。
在单元测试项目下引用"LogAn"的类库。
编写一个测试类和测试方法,单元测试的命名规则有一定的约定,比如说:类名_目的_期望的结果,遵循这个命名规则:
Order_NumberOfOrders_GreaterThanZero_Success
以下是测试类和测试方法:
using LogAn;using NUnit.Framework;namespace MyFirstTestProject{[TestFixture]public class LogAnalyzerTests{[Test]public void IsValidFileName_validFile_ReturnsTrue(){//ArrangeLogAnalyzer analyzer = new LogAnalyzer();//Actbool result = analyzer.IsValidLogFileName("whatever.slf");//AssertAssert.IsTrue(result,"包含正确的后缀名");}}}
生成单元测试项目。
点击Visual Studio 2012左上角的"测试资源管理器",点击"运行"。
显示未通过测试。
修改类库中的代码如下:
if (!fileName.ToLower().EndsWith(".slf"))
并重新生成类库。
再次运行单元测试项目,显示通过。
在单元测试中,如果一个测试中遗留了一些数据、状态或对象实例,可能会导致其它测试的失败。而定位测试之间的依赖性也是很困难的。解决办法是让所有测试之间没有任何依赖关系。NUnit为此提供了[Setup]和[TearDown]这两个特性,旨在某个测试方法执行之前做一些初始化工作,执行之后做一些清理工作。于是,现在测试代码可以修改成如下:
using LogAn;using NUnit.Framework;namespace MyFirstTestProject{[TestFixture]public class LogAnalyzerTests{private LogAnalyzer m_anylyzer = null;[SetUp]public void Setup(){m_anylyzer = new LogAnalyzer();}[Test]public void IsValidFileName_validFile_ReturnsTrue(){//Actbool result = m_anylyzer.IsValidLogFileName("whatever.slf");//AssertAssert.IsTrue(result,"包含正确的后缀名");}[Test]public void IsValidFileName_validFileUpperCased_ReturnsTrue(){bool result = m_anylyzer.IsValidLogFileName("whatever.SLF");Assert.IsTrue(result, "包含正确的后缀名");}[TearDown]public void TearDown(){m_anylyzer = null;}}}
参考资料:
.NET单元测试艺术,等等。
Visual Studio 2012使用NUnit单元测试实践01,安装NUnit并使用的更多相关文章
- Microsoft Visual Studio 2012 Update 4 RC 3 离线安装程序
Microsoft Visual Studio 2012 Update 4 RC 3 离线安装程序 ☆ 微软官网地址:☆ http://www.microsoft.com/en-us/download ...
- ArcGIS 10.2 二次开发,兼容Visual Studio 2012二次开发,完美安装教程
GIS 经常安装是常有的事,每次重装系统都要浪费大半天去安装这个.所以凑这一次安装,把这个软件重新安装的步骤整理了一下,希望对大家有所帮助.这次整理的内容的关键优点是,对常见的出错内容进行了归纳整理. ...
- 在Visual Studio 2012中使用VMSDK开发领域特定语言(一)
前言 本专题主要介绍在Visual Studio 2012中使用Visualization & Modeling SDK进行领域特定语言(DSL)的开发,包括两个部分的内容.在第一部分中,将对 ...
- 在Visual Studio 2012中使用VMSDK开发领域特定语言1
在Visual Studio 2012中使用VMSDK开发领域特定语言(一) 前言 本专题主要介绍在Visual Studio 2012中使用Visualization & Modelin ...
- Visual Studio 2012简体中文专业版密钥(激活码)
VS2012 正式版在Beta版的基础上进行了很多改进,尤其是加入了全新的用户界面. VS2012 的硬件需求与VS2010相同,不过由于 Visual Studio 2012 利用了新版 Windo ...
- [Visual Studio] 开启Visual Studio 2012通过右键菜单创建单元测试(Unit Test)
Visual Studio 2012可以说是迄今为止微软VS开发工具中用户体验最好的产品,无论是速度还是体验以及功能,都非常出色,但是,使用了一段时间后发现有一个之前版本VS都有的功能却在Visual ...
- Visual Studio 2012 Fakes框架测试驱动开发TDD教程
一.前言 最近团队要尝试TDD(测试驱动开发)的实践,很多人习惯了先代码后测试的流程,对于TDD总心存恐惧,认为没有代码的情况下写测试代码时被架空了,没法写下来,其实,根据个人实践经验,TDD并不可怕 ...
- SQL Server Data Tools – Business Intelligence for Visual Studio 2012安装时提示“The CPU architecture....”的解决方法
SQL Server Data Tools – Business Intelligence for Visual Studio 2012,一个很强大的工具,下载地址:http://www.micros ...
- 用Visual Studio 2012+Xamarin搭建C#开发Andriod的环境
第一步:安装Visual Studio: Visual Studio 2012(或者Visual Studio 2010),原因是目前为止Xamarin for Visual Studio的插件只支持 ...
随机推荐
- 【逆向工具】IDA Python安装与使用
1.IDA Pyhon介绍 IDA Python是IDA6.8后自带插件,可以使用Python做很多的辅助操作,非常方便的感觉. 2.IDA Python安装 从github上IDAPython项目获 ...
- Nagios配置文件nagios.cfg详解
这里开始要讲一些Nagios的配置. 首先要看看目前Nagios的主配置路径下有哪些文件.[root@nagios etc]# ll总用量 152-rwxrwxr-x. 1 nagios nagios ...
- c# XML读取
System.Xml 命名空间 https://msdn.microsoft.com/zh-cn/library/gg145036(v=vs.110).aspx 一.读取 1.通过 XmlDocume ...
- springcloud中Feign配置详解
Spring Cloud中Feign配置详解 到目前为止,小伙伴们对Feign的使用已经掌握的差不多了,我们在前文也提到Feign是对Ribbon和Hystrix的整合,那么在Feign中,我们要如何 ...
- [SDOI2009]HH去散步 「矩阵乘法计数」
计数问题也许可以转化为矩阵乘法形式 比如若该题没有不能在一条边上重复走的条件限制,那么直接将邻接矩阵转化为矩阵乘法即可 故 矩阵乘法计数 对于计数问题,若可以将 \(n\) 个点表示成 \(n \ti ...
- VUE之搭建脚手架
原文转自http://blog.csdn.net/Shiyaru1314/article/details/54963027 目录(?)[-] 1 安装之前需要检查是否已经安装NodeJS的环境 安装文 ...
- java 持有对象总结
java提供了大量的持有对象的方式: 1)数组将数字和对象联系起来,它保存类型明确的对象,查询对象时,不需要对结果做类型转换,它可以时多维的,可以保存基本数据类型的数据,但是,数组一旦生成,其容量就不 ...
- Laravel中使用自己的类库三种方式
虽然Composer使得我们可以重用很多现有的类库(例如packagist.org中的),但是我们仍然可能用到一些不兼容composer的包或者类库.另外在某一项目中,我们也可能会创建某一类库,而且可 ...
- k8s的imagePullSecrets如何生成及使用
如果公司的docker仓库(harbor),需要用户认证之后,才能拉取镜像. 那如何在k8s里生成这个secret呢? 这个secret如何还原呢? 在k8s的yaml文件里如何实现呢? 这里提供几个 ...
- 038 spark中使用sparksql对日志进行分析(属于小案例)
一:使用sparksql开发 1.sparksql开发的两种方式 HQL:SQL语句开发 eq : sqlContext.sql("xxxx") DSL : sparkSql中Da ...