Ответ 1
Ветвь - это место, где среда выполнения может выбирать, будет ли она идти тем или иным путем. Давайте возьмем следующий пример:
if(a) {
Foo();
}
if(b) {
Bar();
}
Yay();
Достигнув первой строки, он может решить, хочет ли он войти внутрь тела if(a)
-statement. Кроме того, он может решить не делать этого. На этом этапе мы уже видели два пути (одна ветка).
Следующее утверждение после этого становится более интересным. Он может зайти внутрь тела if
и выполнить Bar
. Это также не может сделать это. Но помните, что у нас уже был филиал раньше. Результат может отличаться, если Foo
был вызван или нет.
Таким образом, мы получаем четыре возможных пути:
- Не звонить
Foo
, не звонитьBar
- Звоню
Foo
, не звонюBar
- Не звонит
Foo
, звонитBar
- Вызов и
Foo
иBar
Последний Yay
всегда выполняется независимо от того, был ли вызван Foo
или Bar
, так что это не считается ответвлением. Таким образом, фрагмент кода выше содержит четыре пути/две ветки (вызывая Foo()
или нет, вызывая Bar()
или нет).
Как и в других уже упомянутых ответах, существует множество операторов, которые могут вызвать switch
(if
/switch
). Не забывайте об условных циклах, таких как while
/for
/do-while
, или операторах короткого замыкания (например, &&
/||
).
Инструмент покрытия кода хочет убедиться, что вы проверили все ветки. Лучше всего было бы, если бы были проверены все пути или даже все (крайний случай) значения, а не только ветки. Это, чтобы убедиться, что нежелательное поведение не выполняется.