• 如何提高j2ee项目的单测覆盖率


    目前觉得j2ee项目单测覆盖率不高的原因主要有以下几个:

    1. 大家开发时间紧张,写完就联调,联调完就提测,没有时间做单测;

    2. 大量代码放在action中,和前端输入耦合在一起,不方便单测;

    3. 和外部接口紧密耦合,外部接口不稳定,或者数据不可预知,无法进行单测;

    4. 有些方法逻辑复杂,想要run起来需要复杂的环境搭配,代价太大,让人望而却步,也就不单测了。

    借鉴一下同事的经验,结合自己的想法,总结如下:

    1. 针对第一个问题,实在没有好的办法,在各方面的压力下,难以坚守自己的原则;

    2. 第二个问题可以解决,把action拆开,每个action执行一个独立的逻辑。每个action专注于和user进行交互,数据放入model中,业务逻辑放入service中,一些工具方法放入静态类中。每个方法目的单一,易于复用,也易于单测;

    3. 第三个问题可以用mock来解决。Mock有两种方式,用自己的实现替换原有的实现,保持接口不变。用mockito,给接口一个临时的实现。不管用那种方式可以保证单测不受外界的影响。但是mock做不了复杂的事情,所有和外界接口的地方最好集中起来,不要四处分散,导致mock的成本很高;

    4. 复杂的方法是单测的大忌。复杂方法的特点是输入很多,输出很多,调用的方法很多,逻辑分支很多。很难用一个简单的测试进行覆盖。因此对付它唯一的办法就是break down,一个原则是if的嵌套不超过3层,参数不超过5个,总行数不超过50行。当然这只是参考,不是绝对的。

  • 相关阅读:
    Windows各种计时器
    C++:数据流和缓冲区
    CImage类的使用介绍!
    PCL:PCL可视化显示点云
    Qt:&OpenCV—Q图像处理基本操作(Code)
    Boost锁~临界区保护和临界资源共享
    关于XML学习
    Eigen库对齐问题:declspec(align('16')) 的形参将不被对齐
    boost多线程使用简例
    一个openMP编程处理图像的示例
  • 原文地址:https://www.cnblogs.com/alphablox/p/2806519.html
Copyright © 2020-2023  润新知