Итак, я узнал, что покрытие ветвей отличается от покрытия решений, поскольку покрытие ветвей обычно включает также безусловные ветви, например. вызовы методов, использование throw, break и других ключевых слов в C#. Но интересно, действительно ли такое покрытие ветвей используется в анализаторах кода? Я подозреваю, что они используют покрытие решений, следя за тем, чтобы были покрыты все результаты решений (т.е. результирующие ветви). Я имею в виду, что следующий код имеет 2 условных, но 5 безусловных ветвей:
if(A)
B();
C();
D();
E();
else
X();
И я считаю, что если я напишу тест, оценивающий A как просто false, анализаторы кода скажут мне, что покрытие ветвей составляет 50%. Но с точки зрения безусловных ветвей больше выполняться не будет. Это правильно?