Unit Test with VS.NET

Unit Test with VS.NET

2014-10-30

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

定义[1]


返回

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

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

单元测试框架[1]


返回

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

Unit Test with VS.NET

图1 单元测试框架

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

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

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

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

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

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

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

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

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


返回

Unit Test with VS.NET

图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

上一篇:Bootstrap <基础二十九>面板(Panels)


下一篇:《条目二十九:对于逐个字符的输入请考虑istreambuf_iterator》