Mock单元测试(jmockit)

  • 备注:单元测试讲究覆盖情况,每一种情况写一个单元测试,保证接口可用性。本文使用jmockit

原理

JMockit是基于JavaSE5中的java.lang.instrument包开发,内部使用ASM库来动态修改java的字节码,使得java这种静态语言可以想动态脚本语言一样动态设置被Mock对象私有属性,模拟静态、私有方法行为等等,对于手机开发,嵌入式开发等要求代码尽量简洁的情况下,或者对于被测试代码不想做任何修改的前提下,使用JMockit可以轻松搞定很多测试场景。

使用

  • JMockit的测试方式可以通过下面2个途径实现:

    一.根据用例的测试路径,测试代码内部逻辑

    对于这种情景,可以使用jmockit的基于行为的mock方式。在这种方式中,目的是测试单元测试及其依赖代码的调用过程,验证代码逻辑是否满足测试路径。  由于被依赖代码可能在自己单测中已测试过,或者难以测试,就需要把这些被依赖代码的逻辑用预定期待的行为替换掉,也就是mock掉,从而把待测是代码隔离开,这也是单元测试的初衷。 这种方式和白盒测试接近。

    二.根据测试用例的输入输出数据,测试代码是否功能运行正常。

    对于这种情景,可以使用jmockit基于状态的mock方式。目的是从被测代码的使用角度出发,结合数据的输入输出来检验程序运行的这个正确性。使用这个方式,需要把被依赖的代码mock掉,实际上相当于改变了被依赖的代码的逻辑。通常在集成测试中,如果有难以调用的外部接口,就通过这个方式mock掉,模拟外部接口。 这种方式有点像黑盒测试。
  • jmockit基本有三个步骤:
    (1)打桩。指定要打桩类和函数,模拟返回结果。

    (2)调用被测方法。被测逻辑执行过程中,之前的打桩数据生效。

    (3)判断测试结果是否符合预期。

  • 具体实例:https://www.cnblogs.com/zishi...

问题