单位测试实战(四种掩饰详解、测试实例)

  单位测试,就是对某一段细粒度的Java代码的逻辑测试。代码块通俗指一个Java 方法自身,一切外部依附都需求mock掉落,仅存眷代码逻辑自身。

  需求留心,单测的一个大年夜条件就是需求清晰的知道自己要测试的依次块所预期的输入输入,然后依据这个预期和依次逻辑来书写case。

  (这里需求留心的就是单测的预期结果?必然要针对需求/设计逻辑去写,而不是针对完成去写,否则单测将毫成心义,照着毛病的完成设计出的case也很能够是错的)

  ?

  ? ?01?掩饰类型? ?

  行掩饰(又叫语句掩饰)就是经过设计必然量的测试用例,保证被测试的方法每行代码都邑被履行一遍。

  门路掩饰是最弱的掩饰方法。

  实例:

  ?

  本例仅需求一个case,便可完成行掩饰。test case 以下:

  ?

  a

  b

  x

  预期结果

  TC1

  2

  0

  3

  6

  ?

  这个用例便可以保证一切的行都被履行。

  ?

  然则仅唯一这一个用例的话,对这个方法的测试就是十分软弱的。

  举个栗子,某RD接到了这个需求,理清了逻辑,写好单测以后末尾写代码(或许写好代码以后末尾写单测)。然则因为手抖,将第三行的 && 写成了 ||:

  然后跑一下单测,发明很顺滑,一下就过了。

  ?

  随后该RD很快乐的将代码宣布到了线上,结果就爆发了严重的花费缺点,因而该RD就被解雇了。

  ?

  行掩饰是一个最基础的掩饰方法,然则也是最单薄的,假设完整依附行掩饰,那不当心就会被解雇。

  ?

  ?

  判定掩饰的含义就是代码里每个判定都要走一次true,一次false。依然用下面的代码,想要完成判定掩饰,需求以下case

  ?

  a

  b

  x

  预期结果

  TC2

  2

  0

  1

  4

  TC3

  3

  1

  1

  1

  ?

  这两个用例可以保证判定 A:(a > 1 || b==0)? 和判定B:(a==2 || x > 1) 辨别都取一次true 和false:

  tc2 时, A,B均为true;tc3时,A,B均为false。

  ?

  可以看出分支掩饰依然有清晰缺点,并没有掩饰到? A: true ?B: false 和 A:false B:true的状况。

  ?

  ?

  ?

  条件掩饰和判定掩饰相似,不外判定掩饰着眼于全部判定语句,而条件掩饰则着眼于某个辨别条件。