需要学习的内容:
● 什么是单元测试
● 单元测试与其他类型的测试有何区别
● 单元测试框架如何有助于快速轻松地编写单元测试
● 在实践TDD 时,在测试中模拟外部资源为何非常重要
● 简要概述NUnit 单元测试框架和Moq 模拟框架,这是.NET 世界中两个非常流行的TDD工具利用替
代对象或模拟对象,使测试能够仅专注于被测代码。
单元测试就是针对一个工作单元设计的测试,
这种测试的好处是:它仅局限于一个特定的工作单元。特点:
1.与其他代码隔离
2.与其他开发人员隔离
3.有针对性
4.可重复
5.可预测
其他类型的测试:
1.用户界面测试验证
2.集成测试
3.压力测试
4.用户验收测试
单元测试框架提供了一种统一的编程模型,可以将测试定义为一些简单的类,这些类中的方法可以调用希望测试的应用程序代码。
NUnit 可能是用于.NET 的最流行单元测试框架,NUnit 是以JUnit 为基础的,JUnit 是一种基于Java 的单元测试工具。
编写的大多数单元测试都有非常简单的模式:
● 执行一些操作,以建立测试。
● 执行测试。
● 验证结果。
● 必要时,重设环境。
测试本身就是一些方法,可以执行和调用要测试的语法。这些方法必须驻存于类中,该类被称为“测试容器”
Setup 特性
[TestFixture]
public class ExampleTests
{
private string _testMessage;
[SetUp]
public void SetupForTest() //SetupForTest 方法中对变量_testMessage 进行初始化。
{
_testMessage = "This is a test.";
}
[Test]
public void TestMethod()
{
Debug.WriteLine(_testMessage);
}
}
如果可以为测试提供设置代码,那就必须另行提供一些代码,在完成测试之后将测试所使用的资源复位。
TearDown特性
private string _testMessage;
[SetUp]
public void SetupForTest()
{
_testMessage = "This is a test.";
}
[Test]
public void TestMethod()
{
Debug.WriteLine(_testMessage);
}
[TearDown]
public void TearDownAfterTest()
{
_testMessage = string.Empty;
}
该示例重现了一种情景,在这种情景中可能希望或需要在完成测试后对资源进行复位
断言(assert)
[Test]
public void MessageLengthGreaterThanZero()
{
if (_testMessage.Length > 0)
{
Assert.Pass();
}
else
{
Assert.Fail();
}
}