关于.NET的单元测试

原创 2016年08月31日 16:02:38

工作之初,其实对单元测试根本就没啥概念,或者说根本不会去建立一个做单元测试的项目来对写的方法就行测试。虽然在文档上,或者项目报价上都会写有这个过程。其实也确实是有的,但基本都是直接执行,单步调试代码或者用日志看看最后的效果是不是需要的。而真正去做单元测试,去了解单元测试中有哪些可用的方法,好像没有。

于是工作至于,找了结合最近项目中的操作,找了相关资料做参考,准备写这个东东,留作自己的总结也行,为他人奉献也罢!

不废话了,现在开发我用vs2013的多,所以主要将的也是针对vs3013的情况。现在做在13中做mvc的开发是可以直接勾选建立单元测试项目的,如果不是mvc 的就需要自己手动建立一个(具体怎么创建我就不说了,不会的···生气去问度娘吧)。这里推荐一个插件“Unit Test Generator”。具体可在vs2013的菜单【工具】中点击【扩展和更新】,在右上角输入Unit Test Generator查找。

创建方法也很简单,在需要进行单元测试的方法上右击选择【Generate Unit Test】单击就行。

单击后效果

需要你配置一个名称的规则,配置好后点击ok即可生成测试方法。

工具就说到这里了,但是具体的测试类,方法有哪些呢?这个才是完成单元测试的关键啊!

单元测试的类都在Microsoft.VisualStudio.TestTools.UnitTesting命名控件中, 主要的类有Assert类、CollectionAssert类和StringAssert类。下面给出Assert类的静态方法,其他两个类我给出链接(在最后面)。

1、 AreEqual:方法被重载了N多次,主要功能是判断两个值是否相等;如果两个值不相等,则测试失败。
2、 AreNotEqual:方法被重载了N多次,主要功能是判断两个值是否不相等;如果两个值相等,则测试失败。
3、 AreNotSame:引用的对象是否不相同;如果两个输入内容引用相同的对象,则测试失败.
4、 AreSame:引用的对象是否相同;如果两个输入内容引用不相同的对象,则测试失败
5、 Fail:断言失败。
 
6、 Inconclusive:表示无法证明为 true 或 false 的测试结果
7、 IsFalse:指定的条件是否为 false;如果该条件为 true,则测试失败。
8、 IsTrue:指定的条件是否为 true;如果该条件为 false,则测试失败
9、 IsInstanceofType:测试指定的对象是否为所需类型的实例;如果所需的实例不在该对象的继承层次结构中,则测试失
 
10、 IsNotInstanceofType: 测试指定的对象是否为所需类型的实例;如果所需的实例在该对象的继承层次结构中,则测试失败
11、 IsNull:测试指定的对象是否为非空
12、 IsNotNull:测试指定的对象是否为非空

具体的例子如下:

 using Microsoft.VisualStudio.TestTools.UnitTesting;
 using System;
 using System.Text;
 using System.Collections.Generic;
 namespace Temp_Test
 {
     /**//// <summary>
     ///这是 TempDll.TempDll 的测试类,旨在
     ///包含所有 TempDll.TempDll 单元测试
     ///</summary>
     [TestClass()]
     public class TempDllTest
     {
        private TestContext testContextInstance;
 
        /**//// <summary>
         ///获取或设置测试上下文,上下文提供
         ///有关当前测试运行及其功能的信息。
         ///</summary>
         public TestContext TestContext
         {
             get
             {
                 return testContextInstance;
             }
             set
             {
                 testContextInstance  = value;
             }
         }
         
         /**//// <summary>
        ///测试方法入口处
         ///</summary>
         [TestMethod()]
         public void Test()
         {
             System.IO.FileInfo file  = null;
             System.IO.FileInfo file1  = file;
             System.IO.DirectoryInfo dir  = null;
             string tempTrue = "T";
             string tempFalse = "F";

             Assert.AreEqual(tempTrue, tempFalse);//两个对想不相同,测试失败
             Assert.AreNotSame(file1, tempTrue);//两个引入的对象是同一个,测试失败"
             Assert.AreSame(file1, file);//两个引入的对象是不相同的

             Assert.Fail();//不管是什么,直接宣布测试失败
             Assert.Inconclusive();//同Fail差不多,但不是失败,只是测试不能通过
             Assert.IsFalse(true);//如果是真,表示测试失败
             Assert.IsTrue(false);//如果为假,请示测试失败

             Assert.IsInstanceOfType(true,tempTrue.GetType());//类型不相同,测试失败
             Assert.IsNull(tempFalse);   //不是空所以测试失败        
         }
 
    }
}

Assert类、CollectionAssert类和StringAssert类的详细介绍可分别参加下列链接,里面有非常具体的介绍。

Assert类详细介绍  ; CollectionAssert类详细介绍  ;  StringAssert类详细介绍


ps:本文参考网页有:http://www.w2bc.com/Article/11186  

http://www.studyofnet.com/news/486.html


版权声明:本文为博主原创文章,未经博主允许不得转载。

.NET单元测试学习(四)--利用COM+对数据库操作进行单元测试

转贴于:http://blog.csdn.net/cpcpc/article/details/6186200 单元测试需要对数据库执行CRUD(Create,Retrieve,Update,...
  • lingxyd_0
  • lingxyd_0
  • 2013年01月07日 11:42
  • 1370

.Net单元测试之NMock

.Net单元测试之NMock NMock是一款.NET平台下的基于动态代理的Mock模拟对象类库,用于C#开发。Mock对象使测试更简单,它测试单个组件或单个类时不需要其它所有组件真正实现。也就是说...
  • xifeijian
  • xifeijian
  • 2013年03月30日 13:25
  • 5035

新手学测试----Unit Test(单元测试)

在程序员做项目的过程中,每当完成一个功能,首先自己需要对完成的功能进行测试,我现在正在做的项目用的工具是VS2012,那么接下来,就说一说在VS2012中是如何创建单元测试的。如何创建单元测试?在VS...
  • u010853701
  • u010853701
  • 2015年06月10日 17:20
  • 2351

转载:ASP.NET MVC之单元测试分分钟的事

一、为什么要进行单元测试? 大部分开发者都有个习惯(包括本人在内),常常不喜欢去做单元测试。因为我们对自己写的程序总是盲目自信,或者存在侥幸心理每次运行通过后就直接扔给测试组的妹子们了。结果妹子一测,...
  • oppos69
  • oppos69
  • 2015年01月27日 17:14
  • 1103

.NET 环境下进行单元测试

转载:http://www.cnblogs.com/IPrograming/archive/2012/12/31/NunitHelloWorld.html 单元测试入门——使用NUnit框架(...
  • ycl295644
  • ycl295644
  • 2015年03月26日 19:23
  • 1229

在.NET开发中的单元测试工具之(2)——xUnit.Net

在上一篇《在.NET开发中的单元测试工具之(1)——NUnit》中讲述了如何使用NUnit在.NET开发中进行单元测试以及NUnit的一些缺点,今天将讲述如何使用xUnit.Net来进行单元测试。xU...
  • zhoufoxcn
  • zhoufoxcn
  • 2013年04月06日 22:15
  • 15411

单元测试—Moq框架

【概念】                  Moq(英语发音是Mock-you 或者只是mock)是一个针对.Net开发的模拟库,它从开始就完全充分利用了.NET3.5(LINQ表达式树)和C...
  • u010164936
  • u010164936
  • 2015年03月15日 14:55
  • 1513

如何进行单元测试

背景: 在ITOO高校云平台项目实践中,我们模板的模块因为在调别人的接口时出现了问题,为了弄明白是不是接口出了问题,就必须学会单元测试。 WHAT? 单元测试(unit testing),是指对...
  • u013037201
  • u013037201
  • 2016年01月07日 20:58
  • 1603

.net 单元测试工具:自带 mstest

转载地址: http://blog.csdn.net/metal1/article/details/9630451    在我的项目中使用的VS自带测试工具MS...
  • xiangbq
  • xiangbq
  • 2016年12月19日 19:00
  • 1080

.NET重构—单元测试重构

重构已是老生常谈的话题,我们或多或少对它有所了解但是对它的深刻理解恐怕需要一段实践过后才能体会到;提到重构就不得不提为它保驾护航的大功臣单元测试,重构能有今天的风光影响力完全少不了单元测试的功劳;最近...
  • wangqingpei557
  • wangqingpei557
  • 2013年10月06日 20:12
  • 1145
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于.NET的单元测试
举报原因:
原因补充:

(最多只允许输入30个字)