C# 单元测试

0 前言

初次接触C#单元测试,本文主要用于简单记录需要的工具以及初步使用方法。供参考。

1 开发坏境及插件

  • VS2013 C#
  • Resharper 10.0.0.2
  • NUnit

注意

  • Resharper必须是版本10以上,测试发现低版本会出现不匹配情况,会报错。或许是需要对应低版本的NUnit。
  • NUnit可以直接使用VS自带的 Nuget 安装: Install-Package NUnit

2 使用

2.1 代码

需要在待测试类名上添加 TestFixture 标记,在对应方法上添加 Test 标记。

using System;
using System.Linq;
using NUnit.Framework; //添加引用

namespace NunitTestProject
{
    [TestFixture]
    class Program
    {
        static void Main(string[] args)
        {
        }

        static string ReverseString(string str)
        {
            if (string.IsNullOrEmpty(str))
            {
                throw new ArgumentNullException("字符串不能为空");
            }
            if (str.Length == 1)
            {
                return str;
            }
            return str.Last() + ReverseString(str.Substring(0, str.Length - 1));
        }

        [Test]
        public static void ReverseStringTest()
        {
            string str = "123456789";
            string result = ReverseString(str);
            Assert.AreEqual("987654321",result);
        }

    }
}

注意
被测试的方法必须是public的。

2.2 运行单元测试

点击左侧标记即可运行该测试函数,或者在Resharper菜单中找到相关选项。

运行测试

Resharper单元测试

运行结果:
运行结果

3 参考资料

Github-nunit
Resharper单元测试帮助文档
测试框架nunit之assertion断言使用详解
MSTest、NUnit、xUnit.net 属性和断言对照表
Stack overflow上关于单元测试失败问题的相关讨论

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
完整的中文版《单元测试之道C#版》。单元测试不但会使你的工作完成得更轻松,而且会令你的设计变得更好,甚至大大减少你花在调试上面的时间。 在我们上面的小故事里面,Pat 因为假设底层的代码是正确无误的而卷入麻烦之中,先是高层代码中使用了底层代码;然后这些高层代码又被更高层的代码所使用,如此往复。在对这些代码的行为没有任何信心的前提下,Pat 等于是在假设上面用竖立卡片堆砌了一间房子——只要将下面卡片轻轻移动,整间房子就会轰然倒塌。 当基本的底层代码不再可靠时,那么必需的改动就无法只局限在底层。虽然你可以修正底层的问题,但是这些对底层代码的修改必然会影响到高层代码,于是高层代码也连带地需要修改;以此递推,就很可能会动到更高层的代码。于是,一个对底层代码的修正,可能会导致对几乎所有代码的一连串改动,从而使修改越来越多,也越来越复杂。于是,整间由卡片堆成的房子就由此倒塌,从而使整个项目也以失败告终。 Pat 总是说:“这怎么可能呢?”或者“我实在想不明白为什么会这样”。如果你发现自己有时候也会有这种想法,那么这通常是你对自己的代码还缺乏足够信心的表现——你并不能确认哪些是工作正常的而哪些不是。 为了获得Dale 所具有的那种对代码的信心,你需要“询问”代码究竟做了什么,并检查所产生的结果是否确实和你所期望的一致。 这个简单的想法描述了单元测试的核心内涵:这个简单有效的技术就是为了令代码变得更加完美。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值