Почему охват ветвей NCover составляет 50%, даже если ветвь оценивается как как истина, так и ложь?

В этом небольшом фрагменте кода:

public event StabilityChangedHandler StabilityChanged;

267   private void RaiseStabilityChanged()
      {
          if (StabilityChanged != null)
          {
  1           StabilityChanged();
          }
275   }

NCover сообщает только о 50% охвате ветвей для этого метода. Однако я знаю, что я RaiseStabilityChanged() вызывается с обработчиками, подключенными к StabilityChangedEvent, и без них. Слева я помещаю количество просмотров, о которых сообщает NCover.

Почему NCover может сообщать о 50% вместо 100%?


person whatsisname    schedule 12.01.2012    source источник
comment
В качестве примечания обычно события реализуются таким образом, чтобы подписка/отмена подписки была потокобезопасной. Таким образом, вы должны скопировать StabilityChanged в локальную переменную, а затем проверить и вызвать эту переменную.   -  person CodesInChaos    schedule 13.01.2012


Ответы (1)


Похоже, что ни один тест никогда не запускается, где StabilityChanged == null. Вероятно, это не важный тест, но он обеспечит 100% охват.

person therealmitchconnors    schedule 12.01.2012
comment
Они сказали, что он был запущен, когда не было обработчика, что означало бы, что он был нулевым. - person Jon Hanna; 13.01.2012
comment
Если бы это было правдой, это было бы 100% покрытие кода... попробуйте установить условные точки останова в операторе if для StabilityChanged==null и посмотреть, сработает ли он во время выполнения теста. - person therealmitchconnors; 13.01.2012
comment
что-то не так и с этими подсчетами попаданий, потому что конечная скобка для метода никоим образом не попадает чаще, чем само объявление метода... что-то здесь не так... - person therealmitchconnors; 13.01.2012
comment
Я согласен, что цифры выглядят неправильно, и поэтому данные, вероятно, также неверно отражают охват филиалов. - person Shaun Wilde; 13.01.2012
comment
возможно ли, что конечная скобка не попадает при возникновении исключения? - person Erik Aronesty; 11.12.2019