单元测试基础知识 => NUnit框架 =>伪对象(桩,模拟对象)=>隔离框架(Rhino Mocks) =>测试的层次组织 =>优秀的单元测试定义(可信赖,可维护,可读)=>测试的实施经验
基础知识
基本概念
单元测试定义:一段自动化的代码调用另一段代码,随后验证一些假设的正确性。单元测试几乎总是用单元测试框架来写的。它是全自动的,可信赖的,可读性强的,可维护的。
集成测试定义:把两个或者多个相依赖的软件模块作为一组进行测试。
单元测试和集成测试区别:
单元测试测的是一个单元,而集成测试测得是多个集成到一起的单元。
“回归”定义:以前好用的功能,现在却出现了问题。
TDD: 测试驱动开发。测试代码写在生产代码之前。
NUnit-单元测试框架;Rhino Mocks-创建桩对象和模拟对象的隔离框架。
NUnit基本知识
NUnit-.Net,免费开源; CppUnit-C++;JUnit-Java
单元测试命名规则:
测试项目 – [被测试项目].Tests
测试类 – [被测类名]Tests
测试方法 – [被测方法名]_[测试场景]_[预期行为]。比如:IsValidFileName_validFile_ReturnsTrue().
NUnit中的特性:
[TestFixture]-用于标识NUnit的自动化测试类。
[Test]-标识NUnit的测试方法,表示一个需要被调用的自动化测试方法。
[SetUp]-应用于方法,NUnit在运行测试类中的每个测试(方法)之前都会执行SetUp方法。
[TearDown]-应用于方法,会在测试类中每个测试(方法)运行结束后,执行一次。
[TestFixtureSetup]-在一个指定测试类中的所有测试运行之前调用。
[TestFixtureTearDown]-在一个指定测试类中的所有测试运行结束后调用。
[ExpectedException]-用于测试异常。验证是否抛出。
[Ignore]-用于[Test]标记的测试方法上,忽略这个测试。在NUnit中显示为黄色。
[Category]-用于设定测试级别。完后在NUnit中选择运行特定的类别。
NUnit测试方法的返回类型必须是void,且参数为空。
NUnit框架中的Assert类中定义了一些断言静态方法。
比如Assert.IsTrue(),Assert.AreEqual()-期望的对象是否与实际的一样,Assert.AreSame()-两个参数引用的是否是同一个对象。
NUnit会自动检测测试程序集改变并自动重新加载。
使用NUnit步骤:
1. 创