C#编程利器之调试篇--单步调试、单元测试

来源:互联网 发布:孙楠退赛汪涵救场 知乎 编辑:程序博客网 时间:2024/06/05 16:14

我们在进行C#编程的时候,有时候会因为某些BUG让我们很苦恼,例如有不经意的拼写错误、逻辑错误,这时我们结合这两个方法许多问题都会迎刃而解。两者无所谓好坏都有各自的优劣,单步调试可以像匕首直刺问题的核心,看出某些值的具体变化。比如说A一直很困恼自己的程序出现BUG了,经过观察以及程序员的直觉怀疑是某段代码出现了问题,那么单步调试派上了用场。单元测试是对整个程序进行的一个测试检查,可以不用关注具体的某段代码错误,而检查该段代码所处的函数是否正确,从而大范围的定位。


下面就分别介绍下单步调试和单元测试的用法:


1.单步调试

首先是在怀疑错误的代码处设置断点,设置断点有两种方法:一、按快捷键F9在任意代码行设置断点;二是用鼠标点击该段代码的最左边灰色处。设置断点之后就是单步调试了,按快捷键F11或者F10开始调试。F11和F10两者的区别是F11在调试的时候进入方法函数体,F10不会进入函数内部,简单来说就是F11更详细点。

举个简单的例子:


     for (int i = 0; i < 10; i++)
            {
                Console.WriteLine(i);
               
            }


假设i值我们认为错了,我们就可以通过单步调试看到它的每一步的值。打开监视窗







代码中可以看出当i加到9的时候执行输出语句,再执行i++语句,不符合条件跳出,从而也没有输出,i的值变成了10,但是只输出到9,看语句的执行过程便看的一清二楚了。



2.单元测试

单元测试是我们再程序开发当中必须可少的一种测试手段,它的好处是可以就单个函数、方法进行测试,不需要主函数,给函数之间可以独立进行,就像一个个封装好的车间,我不需要知道整个工场是怎么运转的,我只需要测试你这个车间生产的数据符不符合我的要求,我也不需要具体的明白你里面是如何工作的。这在许多大的项目中是非常有用的。

下面就来介绍单元测试的方法,写单元测试必须要有好的单元测试工具,主要的有TestDriven和NUnit这里我推荐NUint单元测试

.首先介绍下它的用法,安装Nuget工具包,导入NUnit.Framework.dll文件即可。具体安装方法见http://blog.csdn.net/hongxiuazi/article/details/8747993   。安装完成之后就是写测试代码了


在你程序最后输入下列代码




#region UnitTest


#if DEBUG
        [TestFixture]
        class Test
        {
            [Test]
            public void TestFunction()
            {
                int i = Program.GetValue();

        Console.WriteLine(i);

                Assert.AreEqual(9,i);
            }
        }
#endif


 #endregion


TestFunction();是你的测试函数,就是说这段函数用来测试一段函数代码给他起个名字;int i = Program.GetValue();的意思是指调用需要测试的函数的返回值(我们用函数的返回值来确定该段函数是否正确),program是该需要测试的函数所处的类。赋给i之后,用Assert.AreEqual(9,i);来判断其是否正确,9是你的希望的值,i是它返回的值,如果相同则表示函数是正确的,如果不同则表示函数不符合要求就需要再进一步查找原因了。

那么简单的单元测试也就完成了,其实这里面还有许多小窍门,例如每次打测试函数很麻烦,你可以设定一个函数模板,需要用到Resharp这个插件,设定好了之后就很简单,输入设置的快捷键这段代码就出来了。



原创粉丝点击