VS下单元测试相关操作

VS2019 下的单元测试

一. 什么是单元测试

  • 单元测试是指编写代码来验证开发者编写代码的正确性,一般单元测试也是由开发者完成的,自已开发单元测试代码来检查自己编写代码的通过性。
  • 定义:单元测试是开发人员编写的、用于检测在特定条件下目标代码正确性的代码,单元测试是代码级别的测试。

二.单元测试都有哪些方法?

  • 第一种: 在你需要测试的解决方案树上创建一个Unit Test Project。
  • 第二种: 创建的是Managed Test Project
  • 两种方法的区别:
    两种方法都可以进行单元测试,但是他们是有差别的。其实这两个工程都可用来进行单元测试,Managed Test Project提供了更全面的功能,如对类的开始初始化和结束销毁的处理,每个测试方法前后进行初始化和销毁处理等。而Unit Test Project相当于是对Managed Test Project的一种封装,只提供最简单、最常用的测试功能,而帮我们默认处理很多繁琐的工作。

三. 单元测试的步骤:

  1. 创建一个待测项目,这里创建的是一个空项目,添加test.h文件和test.c文件。
  • 在test.h文件添加如下代码:
        int Add(int a, int b);//加
        int Subtract(int a, int b);//减
        int Multiply(int a, int b);//乘
        int Divide(int a, int b);//除
  • 在test.c文件中添加如下代码:
    #include"test.h"
	
    int Add(int a, int b)
    {
         return a + b;
    }       
    int Subtract(int a, int b)
    {
	    return a + b;
    }
    int Multiply(int a, int b)
    {
        return a + b;
    }
    int Divide(int a, int b)
    {
    	return a + b;
    }

  1. 创建完成以后,右键解决方案,添加单元测试项目,如下:
    在这里插入图片描述

  2. 输入单元测试项目的名称和保存路径,点击创建。

  3. 关联待测试项目,步骤如下:
    在这里插入图片描述
    在这里插入图片描述

  4. 在测试方法中编写如下函数:

TEST_CLASS(UnitTest1)
  {
  	
  	TEST_METHOD(TestMethod1)
  	{
  		int a = rand();
  		int b = rand();
  		int exp = a + b;
  		int ret = Add(a, b);
  		Assert::AreEqual(exp, ret);
  	}
  	TEST_METHOD(Subtract)
  	{
  		int a = rand();
  		int b = rand();
  		int exp = a - b;
  		int ret = Sub(a, b);
  		Assert::AreEqual(exp, ret);
  	}
  	TEST_METHOD(Multiply)
  	{
  		int a = rand();
  		int b = rand();
  		int exp = a * b;
  		int ret = Mul(a, b);
  		Assert::AreEqual(exp, ret);
  	}
  	TEST_METHOD(Divide)
  	{
  		int a = rand();
  		int b = rand();
  		int exp = a / b;
  		int ret = Div(a, b);
  		Assert::AreEqual(exp, ret);
  	}	
  };

点击右边的绿色按钮,开始测试,绿色表示通过,红色表示有问题
在这里插入图片描述

  • 常用的Assert用法:
    • Assert.Inconclusive() 表示一个未验证的测试;
    • Assert.AreEqual() 测试指定的值是否相等,如果相等,则测试通过;
    • AreSame() 用于验证指定的两个对象变量是指向相同的对象,否则认为是错误
    • AreNotSame() 用于验证指定的两个对象变量是指向不同的对象,否则认为是错误
    • Assert.IsTrue() 测试指定的条件是否为True,如果为True,则测试通过;
    • Assert.IsFalse() 测试指定的条件是否为False,如果为False,则测试通过;
    • Assert.IsNull() 测试指定的对象是否为空引用,如果为空,则测试通过;
    • Assert.IsNotNull() 测试指定的对象是否为非空,如果不为空,则测试通过;

四.单元测试的调试

单元测试也能像代码调试一样进行单步调试 ,也可以打断点
在这里插入图片描述

五.单元测试查看代码覆盖率

在这里插入图片描述
注意: 如果代码覆盖率一直为0的话,需要修改以下信息:
在这里插入图片描述

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值