Охват: неоднозначное измерение из-за охвата филиалов

Я заметил, что все тесты без потока управления (такие как if, else, switch и т. д.) показывают 100% покрытие ветвей из-за отсутствия ветвей в блоке кода. Например

def foo = {
println("Hello World!") 
}

Показывает 100% охват ветвей и 0% охват операторов. Это связано с закрытой веткой 0/0. На мой взгляд, я вижу одну ветвь в приведенном выше тестовом примере, поэтому не должна ли быть одна ветвь, даже если нет потока управления?


person user_1357    schedule 07.08.2014    source источник


Ответы (1)


Я предполагаю его семантику. Код может следовать только по одному пути, поэтому он никогда не может «разветвляться». Или вы считаете все это одной веткой.

Если у вас есть железнодорожный путь, который представляет собой прямую линию, сколько у него ответвлений?

У этого есть 2 ветки или 3?

def foo = {
  if (b) 
   println("1")
  else
   println("2)
}

По крайней мере, я думаю, что мы могли бы обновить покрытие, чтобы ваш пример охватывал 100% ветвей, но должен ли он указывать 0 ветвей или 1...

person sksamuel    schedule 09.08.2014
comment
Я вижу две ветки в приведенном выше примере. У вас есть хорошая мысль. Однако 100% покрытие класса только потому, что у него не было ответвлений, сбивало с толку. Особенно, когда не было теста для класса. - person user_1357; 11.08.2014
comment
Я полагаю, правила должны быть такими: если у вас 1 (или 0) филиалов, но нет покрытия, то у вас 0% покрытия филиалов. Если у вас есть 1 или 0 ветвей и по крайней мере одна покрываемая инструкция, то у вас есть 100% покрытие ветвей. - person sksamuel; 11.08.2014
comment
Один вопрос: собираетесь ли вы обновлять покрытие с предлагаемыми изменениями? - person user_1357; 12.08.2014
comment
Следующая неделя превратилась в следующий месяц, но сейчас это было совершено. - person sksamuel; 06.09.2014
comment
Спасибо! Я это проверю. - person user_1357; 06.09.2014