用vs2015对C#代码进行单元测试(一)

手动编写单元测试类和方法

参考了这位同学写的内容之后重新整理了一下,点击即可访问https://www.cnblogs.com/Look_Sun/p/4514732.html

  1. 创建项目
    打开VS2015,新建一个项目。在这里我们默认新建一个控制台应用程序UnitTestDemo,并新建一个单元测试项目UnitTest。
    在这里插入图片描述在这里插入图片描述
    新建后的项目格式如下:
    在这里插入图片描述

  2. 添加方法
    进入控制台项目的Program类,创建一个add方法
    在这里插入图片描述

    namespace UnitTestDemo
    {
        class Program
        {
            static int add(int a, int b)
            {
                return a + b;
            }
    
            static void Main(string[] args)
            {
            }
        }
    }
    

    我们的主要任务就是测试add方法是否可以正常运行并返回正确结果

  3. 在单元测试项目UnitTest中引用控制台项目UnitTestDemo
    在这里插入图片描述
    引用完毕后项目结构如下:
    在这里插入图片描述

  4. 双击UnitTest1.cs可以看到其默认生成的方法
    在这里插入图片描述
    可以看到 UnitTest1 具有一个 [TestClass] 特性,表明这是一个测试类。 TestMethod1 具有一个 [TestMethod] 特性,表明这是一个测试方法。
    可以这样理解,一个方法必须具有 [TestMethod] 特性,且其所属的类具有 [TestClass] 特性,那么这个方法才会被VS承认为一个单元测试方法
    如果没有上面的两个特性中的一个,编译生成是没有任何问题的。但是VS不会把其作为一个单元测试方法

  5. 如何理解“VS不把一个方法作为【单元测试方法】”
    如下所示,打开测试资源管理器 在这里插入图片描述
    可看到测试资源管理器显示如下:
    在这里插入图片描述
    测试资源管理器里面会显示当前解决方案里面的所有单元测试。说明白点就是这里只显示符合【一个方法必须具有 [TestMethod] 特性,且其所属的类具有 [TestClass] 特性】要求的方法。

  6. 那为什么上图里都没显示, [TestMethod] 特性和 [TestClass] 特性现在不是都有吗?原因是你还没有生成程序集。
    *解决办法1:*网上说按F6,但是我实验过后没有效果
    *解决办法2:*右击要测试的方法,点击运行测试,即可显示,如下所示:
    在这里插入图片描述

  7. 在TestMethod1中加入要测试的内容:
    在这里插入图片描述
    但是会有报错,这里主要是因为没有使用Program对应的命名空间,于是我们在第三行加入using UnitTestDemo; ,又出现了新的错误
    在这里插入图片描述
    这个错误的解决办法是:将program类和add方法改为Public
    在这里插入图片描述

  8. 重新运行测试,可得到以下结果:
    在这里插入图片描述
    如果失败的话,则如下所示:
    在这里插入图片描述

  9. Assert的用法

Assert.AreEqual() :测试指定的值是否相等,如果相等,则测试通过;
Assert.Inconclusive():表示一个未验证的测试;
Assert.IsTrue(): 测试指定的条件是否为True,如果为True,则测试通过;
Assert.IsFalse() :测试指定的条件是否为False,如果为False,则测试通过;
Assert.IsNull():测试指定的对象是否为空引用,如果为空,则测试通过;
Assert.IsNotNull():测试指定的对象是否为非空,如果不为空,则测试通过;

点击此处可获得详细的Assert用法

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值