Unit testing 区块覆盖和分支覆盖的区别是什么?

Unit testing 区块覆盖和分支覆盖的区别是什么?,unit-testing,testing,code-coverage,metrics,code-metrics,Unit Testing,Testing,Code Coverage,Metrics,Code Metrics,区块覆盖与分支覆盖相同、相似还是完全不同 解释分支覆盖率的Google顶部链接:块覆盖率(或“基本块覆盖率”)和分支覆盖率是两种不同的代码覆盖率度量。块覆盖率统计以分支为边界的块。分支覆盖率统计实际分支 这个代码片段 puts "I'm block 1" if condition puts "I'm block 2" else puts "I'm block 3" end puts "I'm block 4" 有四个块,但只有两个分支,即if/else的两侧。如果此代码仅通过一个测试进

区块覆盖与分支覆盖相同、相似还是完全不同

解释分支覆盖率的Google顶部链接:

块覆盖率(或“基本块覆盖率”)和分支覆盖率是两种不同的代码覆盖率度量。块覆盖率统计以分支为边界的块。分支覆盖率统计实际分支

这个代码片段

puts "I'm block 1"
if condition
  puts "I'm block 2"
else
  puts "I'm block 3"
end
puts "I'm block 4"
有四个块,但只有两个分支,即
if
/
else
的两侧。如果此代码仅通过一个测试进行测试,且该测试中的
条件
为真

  • 区块1、2和4将被覆盖,因此区块覆盖率将为75%
  • 将覆盖
    if
    的真实分支,但不覆盖
    if
    的虚假分支,因此分支覆盖率将为50%

感谢您提供的简单示例!我很确定在你给出的例子中只有3个街区;1和4是同一块。很可能。我想我用一个工具测试了这个,当时我手边有,但现在没有。如果工具将条件之外的所有程序/函数/方法视为单个块,则示例中的块覆盖率将为67%,仍然不同于分支覆盖率。