当前位置:坤哥网-kungge-学会使用单元测试,培养你的重构意识

学会使用单元测试,培养你的重构意识

2017/7/29 19:42:59 kungge阅读(304) 评论(0)


为什么要使用单元测试?也许有人就会要问了,要是测试的话在主项目中写个测试方法或者在调用某个代码块时写死参数后面再删除就行了,干嘛要那么麻烦新建一个单元测试项目呢?我个人从以下两点来谈谈单元测试的好处:

  1. 在主项目中添加测试方法并不可取,第一给主项目增加了额外与业务无关的代码,第二若是测试一次把测试代码去除确实没有第一点的问题,但是却达不到复用的目的,下次还得重写,但若不删除就会有第一点问题,而且实际项目往往是团队项目,你写的测试代码可能会忘记删除而提交到了代码库中,可能别人并不知道这是测试代码而当做正常的代码去修改,最后提交到生产环境中测试代码影响了主业务那可是要致命的。而单元测试是与主项目隔离开的,只需要引用主项目即可,第一永远不会影响主业务,第二写的测试代码还可以被重复使用。

  2. 习惯使用单元测试,这样你写的代码要尽可能多的实现测试的话,就会让你去设计把每个方法都写成可以测试的,这可以大大提高你的重构意识。在你实现可测试代码的方法的时候,你就必须修改原有代码,让其职责尽量单一并与上下文无关,让其尽量只通过输入输出实现功能,让依赖的类变成接口而不是具体的实现类。长久坚持下去你的重构能力会越来越强,写出的代码耦合性会越来越低,对设计模式的理解也会更加深刻,最终你的编程水平也会大幅提升。

既然有这么大的的好处,还不赶紧使用单元测试,下面介绍在vs中使用单元测试。


添加单元测试项目


单元测试项目一般和主项目放在一个解决方案中,这样当主项目更新的时候随时可以用单元测试项目用来测试新增或者修改的逻辑。在Visual Studio中创建单元测试项目用来测试项目很方便,右键解决方案,添加单元测试项目:

c4cdc360-d817-4100-9ed2-46337992af68.png


要测试那个项目的方法,只需要对项目添加引用即可。

新建完之后,系统默认添加了一个UnitTest1类,你也可以为不同的项目模块添加不同的类,在该类中添加方法用来测试项目中的方法。只要将类添加TestClass特性,则该类就为测试类,在方法上添加TestMethod特性,则该方法即为测试方法,否则就是普通的方法。在方法上添加TestInitialize特性,则这个方法就是测试类启动后第一个被调用的方法,我们可以在这个方法中做一些如初始化等操作。


本次的主项目是一个Web Mvc项目,添加一个LoveHelper类:

public class LoveHelper
    {
        public string ShowLove()
        {
            return "I Love You";
        }

        public int AddLove(int a,int b)
        {
            return a + b;
        }
    }

在单元测试项目中UnitTest1类中添加对上面两个方法的测试:

        [TestMethod]
        public void TestShowLove()
        {
            LoveHelper helper = new LoveHelper();
            string str= helper.ShowLove();

            Assert.AreEqual("I Love You",str);
        }

        [TestMethod]
        public void TestAddLove()
        {
            LoveHelper helper = new LoveHelper();
            int result = helper.AddLove(520,520);

            Assert.AreEqual(1024, result);
        }

经常使用Assert.AreEqual方法用来测试指定值是否相等,如果相等则测试通过,反之则表示未通过测试。


运行单元测试项目


在要调试的方法中设置断点,右键调试测试,则运行之后会命中断点,这样是测试单个方法:

c7bb9282-d5ca-4988-88b1-cf8187a6f939.png


方法运行完之后,则在测试资源管理器中可以看到测试结果:

1b3fee89-c7f6-4c57-8a59-e4bc2bac80e9.png

右键运行测试,则会运行该类中所有的测试方法,如下在测试资源管理器中查看测试结果:

85d03215-039a-4738-ac88-a59707ff3d2a.png

显而易见TestAddLove方法测试未通过。


以上介绍了单元测试项目,在实际开发中,单元测试是很重用的,项目越大,业务逻辑越复杂单元测试越重要,所以建议尽量使用单元测试项目来测试你的程序。

标签: 单元测试
分类: 测试

发表评论 没有账号,注册评论