摘要
所谓单元测试(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:测试指定的对象是否为非空
**如果你从事上位机、自动化、IT、机器视觉、物联网(IoT)或数字化转型,欢迎加入我的微信圈子!在这里我们可以:
交流最新技术与行业趋势
互相解决技术问题、分享实战经验
结识志同道合的开发者(新手/资深都欢迎)
喜欢把代码写得漂亮、把问题拆得清楚?也欢迎访问我的技术资源网站:
技术老小子(OTTeach) —
http://www.otteach.cn
,包含实用教程和项目实战,原代码下载请前往该站。
**