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;
        }
    }
}

新建一个单元测试项目

image.png

菜单Test中找到 Test Explorer

image.png

写一下测试代码

public void QtyTest()
{
    Material material = new Material();
    material.Qty = 10;
    Assert.AreEqual(material.In(5), 20);

}

右键运行过程

image.png

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
,包含实用教程和项目实战,原代码下载请前往该站。
**

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容