Unit Test with VS.NET

2014-10-30

定义
单元测试框架
Visual Studio 2008提供的单元测试框架
参考

定义[1]


返回

传统的单元测试:是一段代码(通常一个方法)调用另外一段代码,随后检验一些假设的正确性。如果假设的结果错了,单元测试失败。一个“单元”指的是一个方法或函数。

优秀的单元测试:是一段自动化的代码,用来调用被测试的方法或类,而后验证基于该方法或类的逻辑行为的一些假设。单元测试几乎总是用单元测试框架来写的。它写起来很顺手,运行起来不费时。它是全自动的、可信赖的、可读性强、可维护。

单元测试框架[1]


返回

作用:单元测试是基于单元测试框架提供的库,是用代码实现的。然后在一个独立的单元测试工具中运行,开发人员可以去评估结果(以UI或者文本的方式),也可以利用自动化构建过程去评估结果

图1 单元测试框架

表一 单元测试框架如何帮助开发人员编写和执行测试,评估结果

单元测试实践 框架的用途
用方便和结构化的方式编写测试

框架开发人员提供一个类库,其中包括:

  • 可以被继承的基类或者接口
  • 放在代码中的特性,用于标示要执行的测试
  • 提供断言(assert)类,包含可用于验证代码的断言方法
执行一个或者所有的单元测试

框架提供一个测试运行起(test runner,一个命令行或者GUI工具),它可以:

  • 识别代码中的测试
  • 自动化执行测试
  • 执行过程中现实状态
  • 可以通过命令行调用自动执行
评估测试执行结果

测试运行器通常提供以下信息:

  • 执行多少测试
  • 多少测试没有执行
  • 多少测试失败那些测试失败
  • 测试失败的原因
  • 你所写的断言(Assert)信息
  • 失败的代码位置
  • 可能包括导致测试失败的任何异常的完整栈追踪信息,以便让你可以找到调用栈中的各种方法

Visual Studio 2008提供的单元测试框架[3]


返回

图2 Visual Studio 2008提供的单元测试框架

Unit Test Case Class Level Attributes

Attributes Used to Establish a Calling Order

  • AssemblyInitializeAttribute
  • AssemblyCleanupAttribute
  • ClassInitializeAttribute
  • ClassCleanupAttribute
  • TestInitializeAttribute
  • TestCleanupAttribute

Attributes used to Identify Test Classes and Methods

  • TestClassAttribute
  • TestMethodAttribute

Using Assert Class

  • Assert
  • CollectionAssert
  • StringAssert
  • AssertFailedException
  • AssertInconclusiveException
  • UnitTestAssertException
  • ExpectedExceptionAttribute

参考

[1] 书籍:《.NET单元测试艺术》

[2] 单元测试之Stub和Mock

[3] Unit Tests Overview

Unit Test with VS.NET的更多相关文章

  1. ABP(现代ASP.NET样板开发框架)系列之12、ABP领域层——工作单元(Unit Of work)

    点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之12.ABP领域层——工作单元(Unit Of work) ABP是“ASP.NET Boilerplate Pr ...

  2. ABP源码分析十:Unit Of Work

    ABP以AOP的方式实现UnitOfWork功能.通过UnitOfWorkRegistrar将UnitOfWorkInterceptor在某个类被注册到IOCContainner的时候,一并添加到该类 ...

  3. Failed to stop iptables.service: Unit iptables.service not loaded.

    redhat 7 [root@lk0 ~]# service iptables stop Redirecting to /bin/systemctl stop iptables.service Fai ...

  4. VS2012 Unit Test 个人学习汇总(含目录)

    首先,给出MSDN相关地址:http://msdn.microsoft.com/en-us/library/Microsoft.VisualStudio.TestTools.UnitTesting.a ...

  5. VS2012 Unit Test —— 我对IdleTest库动的大手术以及对Xml相关操作进行测试的方式

    [1]我的IdleTest源码地址:http://idletest.codeplex.com/ [2]IdleTest改动说明:2013年10月份在保持原有功能的情况下对其动了较大的手术,首先将基本的 ...

  6. VS2012 Unit Test——Microsoft Fakes入门

    如题,本文主要作为在VS2012使用Fakes的入门示例,开发工具必须是VS2012或更高版本. 关于Fakes的MSDN地址:http://msdn.microsoft.com/en-us/libr ...

  7. MTU(Maximum transmission unit) 最大传输单元

    最大传输单元(Maximum transmission unit),以太网MTU为1500. 不同网络MTU如下: 如果最大报文数据大小(MSS)超过MTU,则会引起分片操作.   路径MTU: 网路 ...

  8. Simulink Memory vs Unit Delay

    Memoryブロック.Unit Delayブロック共に前回の入力値を出力しますが.動作するタイミングが異なります. ●Memoryブロック シミュレーションの各時刻(ステップ)で動作し.「1ステップ」 ...

  9. GRU(Gated Recurrent Unit) 更新过程推导及简单代码实现

    GRU(Gated Recurrent Unit) 更新过程推导及简单代码实现 RNN GRU matlab codes RNN网络考虑到了具有时间数列的样本数据,但是RNN仍存在着一些问题,比如随着 ...

  10. Unit Testing with NSubstitute

    These are the contents of my training session about unit testing, and also have some introductions a ...

随机推荐

  1. 【BZOJ】【3894】文理分科

    网络流/最小割 rausen大爷太神辣-作为一个蒟蒻还是搬运题解吧…… 很明显的一道网络流题.. 首先把所有值的加起来,再减掉网络流最小割值就好了,问题就是如何建图.这貌似也是考了好多次了的... 把 ...

  2. 序列化Color对象

    如下: public class Class2 { [XmlIgnore] public Color Color1 { get { return color1; } set { color1 = va ...

  3. iOS 开发中的问题

    错误提示: Your build settings specify a provisioning profile with the UUID “39642B69-0278-4265-8392-4B28 ...

  4. AngularJs学习笔记--concepts(概念)

    原版地址:http://code.angularjs.org/1.0.2/docs/guide/concepts 继续.. 一.总括 本文主要是angular组件(components)的概览,并说明 ...

  5. PC和移动端浏览器同步测试工具Browsersync使用介绍

    在移动端网页开发中,总是因为不方便调试,导致各种问题不容易被发现.但是现在有了Browsersync,一切都解决了. 不熟悉的同学可以看看Browsersync的官方网站Browsersync中文网. ...

  6. 用CSS3制作的旋转六面体动画

    这是用CSS3制作的旋转的六面体 请用火狐或谷歌浏览器预览,有些旋转角度做的不够好,请大神指教 top bottom left right front back

  7. ASP.NET防止用户多次登录的方法

    常见的处理方法是,在用户登录时,判断此用户是否已经在Application中存在,如果存在就报错,不存在的话就加到Application中(Application是所有Session共有的,整个web ...

  8. 微信连WiFi关注公众号流程更新 解决ios微信扫描二维码不关注就能上网的问题

    前几天鼓捣了一下微信连WiFi功能,设置还蛮简单的,但ytkah发现如果是ios版微信扫描微信连WiFi生成的二维码不用关注公众号就可以直接上网了,而安卓版需要关注公众号才能上网,这样就少了很多ios ...

  9. webservice wsdl 生成服务

    由于之前的示例是在当前项目下发布的server,也是在当前项目下访问的server发布的webservice.但在实际应用中,我们的服务端往往是和客户諯分离的,甚至它们是不同的项目中不同的人写的.而像 ...

  10. 解决vsftpd日志时间问题

    解决vsftpd日志时间问题 发布时间:August 29, 2008 分类:Linux <你必须承认土也是一种艺术> <Linux下查看Apache的请求数> 最近发现vsf ...