108.C# 单元测试
摘要
所谓单元测试(unit testing),就是开发者编写的一小段代码,用于对软件中的最小单元进行检查和验证,其一般验证对象是一个函数或者一个类。通常而言,一个单元测试是用于判断某个特定条件(或者场景)下某个特定函数的行为。
正文
为什么要使用单元测试?
- 大大节约了测试和修改的时间,有效且便于测试各种情况。
- 能快速定位bug(每一个测试用例都是具有针对性)。
- 能使开发人员重新审视需求和功能的设计(难以单元测试的代码,就需要重新设计)。
- 强迫开发者以调用者而不是实现者的角度来设计代码,利于代码之间的解耦。
- 自动化的单元测试能保证回归测试的有效执行。
- 使代码可以放心修改和重构。
- 测试用例,可作为开发文档使用(测试即文档)。
- 测试用例永久保存,支持随时测试。
新建一个类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace utest
{
public class Material
{
public string Name { get; set; }
public int Qty { get; set; }
public void In(int qty)
{
this.Qty += qty;
}
public void Out(int qty)
{
this.Qty -= qty;
}
}
}
新建一个单元测试项目
菜单Test中找到 Test Explorer
写一下测试代码
public void QtyTest()
{
Material material = new Material();
material.Qty = 10;
Assert.AreEqual(material.In(5), 20);
}
右键运行过程
Assert类主要的静态成员
1、 AreEqual:方法被重载了N多次,主要功能是判断两个值是否相等;如果两个值不相等,则测试失败。
2、 AreNotEqual:方法被重载了N多次,主要功能是判断两个值是否不相等;如果两个值相等,则测试失败。
3、 AreNotSame:引用的对象是否不相同;如果两个输入内容引用相同的对象,则测试失败.
4、 AreSame:引用的对象是否相同;如果两个输入内容引用不相同的对象,则测试失败
5、 Fail:断言失败。
6、 Inconclusive:表示无法证明为 true 或 false 的测试结果
7、 IsFalse:指定的条件是否为 false;如果该条件为 true,则测试失败。
8、 IsTrue:指定的条件是否为 true;如果该条件为 false,则测试失败
9、 IsInstanceofType:测试指定的对象是否为所需类型的实例;如果所需的实例不在该对象的继承层次结构中,则测试失
10、 IsNotInstanceofType: 测试指定的对象是否为所需类型的实例;如果所需的实例在该对象的继承层次结构中,则测试失败
11、 IsNull:测试指定的对象是否为非空
12、 IsNotNull:测试指定的对象是否为非空
下一篇:48.C# 控件概述