单元测试实践的主要问题与解决(4)

来源:互联网 发布:mac os x sierra 编辑:程序博客网 时间:2024/06/05 18:41
新加的这几行代码完成字符串的移动。这样,代码基本上写完了,结果对不对呢?CTRL+F7编译一下。
    
    结果是完全不对的。我们来分析一下,输入是这个,全部代码都是黑色,表示都执行到了,跟我设想的一样。问题在哪里呢?

    看一下计算左边空格的代码,经过计算后,指针偏移了,所以后面的计算,使用的是不正确的指针。
    

    我们把指针先保存一下,第二次计算前再恢复回来。看看结果怎么样。
    
    现在,参数的输出是正确的了。但是,返回值还是不对,返回值应该跟参数一样。分析一下,经过这里的计算后,指针再次偏移了,返回前没有恢复,所以,返回的是不正确的指针。
    

    返回前,再次把指针恢复。看看结果。
    
    现在,结果是正确的了。看一下测试结果,还有一个异常。
    
    点击它,可以看到,是空指针产生了这个异常,我们的代码没有对空指针进行处理。在这里,可以很清晰的看到代码的执行状况。前面三行是黑色的,第四行开始都是红色的,表示代码只执行到第三行,也就是说,第三行产生了异常。
    
    添加处理空指针的代码。
    
    现在,代码写完了,单元测试也同步完成了。
    
    我们来回顾一下ETDD过程:跟传统开发模式相比,ETDD多付出的,是把以前仅在头脑里想的代码功能记录下来,从而精确地、完整地进行代码的功能设计。
    
    ETDD所得到的,是在编写代码的过程中,随时可以看到代码的行为,这可以让我们的编码过程变得轻松,而且也基本上不用调试,大家知道,调试,是最花费时间的。
    
    

    另一方面,只要这里设定的数据是完整的,那么,我们的代码就没有问题。将来,如果需要修改代码,只要重新执行一下测试,就可以知道是不是破坏了原有的功能。
    
    小结:ETDD通过可视化来帮助程序员轻松地编写程序,单元测试不再是一个负担;ETDD通过自动化,使程序员只需要在考虑代码功能时顺手记录一下,其他工作都由工具完成。ETDD提升了编码的效率,也省略大部分调试,从而大幅提升了生产力。
  
(未完待续)


原创粉丝点击