NUnit单元测试心得(2)

发表于:2014-04-03来源:博客园作者:jialege点击数: 标签:NUnit单元测试
三、如何在实际项目中应用单元测试(.Net项目为例) 1、以NUnit为例,示范几个简单的例子 2、单元测试的核心技术 桩对象,是对系统中现有外部依赖的一个

  三、如何在实际项目中应用单元测试(.Net项目为例)

  1、以NUnit为例,示范几个简单的例子

  2、单元测试的核心技术

  桩对象,是对系统中现有外部依赖的一个替代品,可人为控制

  模拟对象,模仿外部依赖,属于一个伪对象,用于检验交互行为

  隔离框架

  NUnit标签介绍

  [TestFixture],用于标识一个包含NUnit自动化测试的类

  [TestCase],用于标识测试方法为一个参数化测试

  [ExpectedException],用于标识被测试方法应该抛出异常

  [Test],用于标识一个需要被调用的自动化测试

  [SetUp],会在测试类中的每个测试运行之前执行

  [TearDown],会在测试类中的每个测试运行之后执行

  [TestFixtureSetUp],会在测试类中的所有测试运行之前执行

  [TestFixtureTearDown],会在测试类中的所有测试运行之后执行

  Assert类,用于证明某个假设是否成立

  Assert.IsTure(),用于验证结果是否为true

  Assert.IsFalse(),用于验证结果是否为false

  Assert.AreEqual(),用于验证期望的对象是否与实际一样

  Assert.AreSame (),用于验证两个参数引用是否为同一个对象

  解除外部依赖的技巧

  抽取接口,以允许替换底层实现

  在被测类中注入中注入伪对象的实现

  注入伪对象的几种方法

  构造函数注入

  属性注入

  方法参数(参数注入)

  工厂类注入

  局部工厂方法注入(不讲)

  抽取和重写注入

  属性注入、参数注入和构造函数注入基本一致,只是注入的位置不一样。属性注入通过注入桩对象,参数注入通过方法的参数注入桩对象,下面看看工厂类注入

  上面的例子,讲的都是桩对象的注入,其实模拟对象的注入跟桩对象是一样的,关键是要弄清楚桩对象和模拟对象的区别

  桩对象的目的是解除外部依赖,为被测方法传入一个可控制的对象,让测试可以进行

  模拟对象的目的是测试方法是否向外界发送了信息,检验交互行为,所以单元测试检验的对象不再是被测方法,而是模拟对象

  隔离框架,用于快速生成桩对象和模拟对象,减少开发人员的负担,常用的隔离框架有Rhion Mocks、Moq等等

原文转自:http://www.cnblogs.com/jialege/p/3601184.html