Еще хуже проблема в том, что кажется, что счетчики строк перед @throw в том же блоке условий также не являются одинаковыми.Поэтому просто написать код перед @throw в качестве маркера не поможет решить проблему.
Однако , я обнаружил, что условия включают переменные ("if (YES)", "if (1 == 1) "не в делах") всегда покрываемыСледовательно, мы могли бы сделать непростую задачу - сначала определить тривиальную переменную условия, а затем добавить тест условия, включающий эту переменную, перед @ throw.
static BOOL __trivialYES = YES; //for cover @throw, and never use 'const'
затем
if(__trivialYES) @throw ...;
Помогает решить проблему, и для вашего удобства вы можете определить свой собственный макрос для этих вещей.
#define #throw if (__trivialYES)
, а затем оператор throw:
#throw ...;
, и это, вероятно, сделает тест покрытияработать лучше.
PS: «#throw» - просто пример макроса.Это так же, как другой макрос.'#' - просто действительный символ (для некоторых прекомпиляторов), что делает его особенным.