zoukankan      html  css  js  c++  java
  • 如何提高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行。当然这只是参考,不是绝对的。

  • 相关阅读:
    一些常用的接口地址
    1-项目启动
    事件处理优化
    如何javascript获取css中的样式
    mysql编程--创建函数出错的解决方案
    mysql编程---函数
    mysql---数据控制语言(用户及其权限管理)
    php与mysql的常规使用
    php数组的使用
    php函数的使用
  • 原文地址:https://www.cnblogs.com/alphablox/p/2806519.html
Copyright © 2011-2022 走看看