Результат покрытия кода NCover для заведомо провальных тестов - PullRequest
2 голосов
/ 20 июля 2010

У меня есть пара методов расширения вспомогательных тестов, например, IsNotEmpty(this string str), для которых я также написал модульные тесты.Основная структура этих тестов состоит в том, что у меня есть один тест, который проверяет, что метод расширения проходит и возвращает ожидаемый результат на «хорошем» входе, и тот, который проверяет, что исключение сбоя генерируется на «плохом» входе.Например, тесты на отказ для вышеуказанного метода могут выглядеть следующим образом:

[TestMethod, Fails]
public void IsNotEmpty_Fails_On_Empty_String()
{
    "".IsNotEmpty();
}

, где Fails - это атрибут, который я сам написал - в основном, прокси для [ExpectedException(typeof(AssertFailedException))].Так что я явно ожидаю, что будет выдано исключение на единственной строке в приведенном выше тесте, и, таким образом, я не ожидаю, что метод будет запущен полностью.

Но когда я щелкаю правой кнопкой мыши свое решение и выбираю «Тестировать с помощью> NCover», я получаю покрытие кода менее 100% * во всех методах, подобных приведенному выше, с конечной скобкой, выделенной красным.

Почему NCover жалуется на то, что мой тест метод не заканчивается, когда я сказал, что он не будет?

**) Для всех тех из васкто ответит, что нет необходимости в 100% -ном покрытии кода: нет, я не особо беспокоюсь о сохранении 100% -ного покрытия кода любой ценой.Однако в этих случаях методы, которые * имеют значение , отображаются как не охваченные в списке, и я должен пройти весь путь до дерева, чтобы увидеть, что это только они. Это проблема, которую япытаюсь добраться сюда - не 100% покрытие кода в целом.

Ответы [ 2 ]

5 голосов
/ 22 июля 2010

Вы используете отладочную сборку?Это, вероятно, проблема.NCover работает от точек останова отладки, и Microsoft добавляет один к закрывающей скобке каждого метода, чтобы он мог перейти туда, прежде чем покинуть метод.Запуск в режиме релиза должен позаботиться о закрывающих скобках.

0 голосов
/ 20 июля 2010

Не беспокойтесь о 100% покрытии кода. Просто подойди как можно ближе.

Достижение 100% покрытия кода - пустая трата времени.

Все, что имеет значение, это то, что вы уверены в своих тестах, охватывающих код, который необходимо охватить.

У вас может быть солидный набор тестов, который охватывает только 70% вашего кода.

Ваши лучшие тесты, вероятно, охватывают только несколько строк, но именно они предотвратят большинство ошибок. Это «крайние тесты». Те, которые без них, другие тесты бесполезны. Весь ваш набор тестов бесполезен, так как это те случаи, в которых проверяются ошибки, которые, как правило, продолжают вводиться в базу кода, если бы их не было.

...