Функциональность dotCover

dotCover — это инструмент для юнит-тестирования и оценки покрытия кода, работающий непосредственно в Visual Studio и JetBrains Rider. Он помогает понять степень покрытия вашего кода юнит-тестами, предлагает множество удобных способов визуализировать покрытие кода и готов к использованию в окружении непрерывной интеграции. dotCover вычисляет и фиксирует покрытие кода на уровне операторов в приложениях, разрабатываемых под платформы .NET Framework, .NET Core, Mono и Mono for Unity.

Интеграция с Visual Studio и Rider

Интеграция с Visual Studio и JetBrains Rider

dotCover является плагином для Visual Studio и JetBrains Rider, что дает возможность анализировать и визуализировать покрытие кода, не покидая редактора. В число его возможностей также входят юнит-тестирование и анализ результатов покрытия непосредственно в IDE, а также поддержка различных цветовых тем, новых иконок и меню.

dotCover поддерживает Visual Studio 2010–2019 и JetBrains Rider с версии 2018.2.

Поддержка macOS и Linux

Работает на Windows, macOS и Linux

При работе в Visual Studio или JetBrains Rider под Windows, dotCover поддерживает проекты, разрабатываемые для платформ .NET Framework 1.0–4.7, .NET Core 1.0–3.0. На macOS и Linux dotCover можно использовать только с JetBrains Rider для анализа покрытия кода в проектах .NET Core 1.0–3.0, Mono начиная с версии 5.10 и Mono for Unity с версии 2018.3.

Встроенный инструмент запуска юнит-тестов

Юнит-тесты: запуск и управление

dotCover включает в себя инструмент запуска юнит-тестов, который также используется в другом продукте JetBrains для .NET-разработки — ReSharper.

Инструмент для запуска тестов работает в Visual Studio/JetBrains Rider и позволяет управлять юнит-тестами с помощью сессий. Он без предварительной настройки поддерживает ряд фреймворков юнит-тестирования, таких как MSTest, NUnit и xUnit, а также MSpec (с помощью плагина).

Непрерывное тестирование с dotCover

Непрерывное тестирование

dotCover поддерживает практику «непрерывного тестирования» — современного рабочего процесса организации юнит-тестирования, в котором dotCover на ходу определяет, на какие юнит-тесты повлияли последние изменения вашего кода, после чего автоматически перезапускает эти тесты.

В разделе предпочтений вы можете настроить, как dotCover будет запускать такие тесты — при сохранении файла, сборке решения или в результате вашей прямой команды.

Режим непрерывного тестирования можно включить в любом сеансе юнит-тестирования. Это позволяет вам выбирать, какие тесты вы хотите выполнять непрерывно, а какие — традиционными образом.

Юнит-тесты: запуск и управление с помощью инструмента запуска тестов dotCover

Покрытие кода юнит-тестами

Важнейшим сценарием использования dotCover является анализ покрытия кода юнит-тестами, то есть определение того, какие части бизнес-логики приложения охвачены юнит-тестами, а какие нет.

Вместе с результатами запуска юнит-тестов dotCover отображает дерево покрытия, показывающее, насколько тщательно охвачен юнит-тестами определенный проект, пространство имен, тип или член типа.

Подсветка покрытия в Visual Studio и JetBrains Rider

Для визуализации данных покрытия dotCover имеет возможность подсвечивать строки кода непосредственно в редакторе. Предусмотрена возможность переключения между подсветкой с помощью маркеров и цветного фона, также можно использовать оба варианта.

Обратите внимание: подсветкой отмечается не только покрытый и непокрытый код, но также и результаты покрывающих юнит-тестов. Зеленый цвет означает, что тесты были успешны, а красный — что по крайней мере в одном тесте, покрывающем оператор, произошел сбой. Серым цветом обозначается непокрытый код.

Быстрый переход от кода к покрывающим его юнит-тестам

Быстрый переход к тестам покрытия

Одна из команд dotCover (вызываемая также сочетанием клавиш) позволяет увидеть, какие тесты покрывают определенную область кода, например класс, метод или свойство.

Вы можете вызвать команду из текстового редактора Visual Studio или из окна dotCover Дерево покрытия.

Из всплывающего окна со списком тестов покрытия можно перейти к любому из этих тестов. Кроме того, вы можете моментально запустить их или добавить в существующий сеанс юнит-тестирования.

dotCover: экран «Хот-споты»

Режим просмотра хот-спотов

Режим просмотра хот-спотов помогает определить наиболее рискованные методы в составе вашего решения. Хот-споты вычисляются на основании высокой цикломатической сложности методов и их низкого покрытия юнит-тестированием.

Выполнение анализа покрытия на удаленной машине

Удаленная оценка покрытия кода

Вы можете выполнить анализ покрытия юнит-тестами на удаленной машине, получив результаты на свой локальный компьютер. Как только вы начинаете анализ покрытия, dotCover отправляет двоичные файлы и список подлежащих выполнению тестов на удаленный сервер.

Все вычисления выполняются сервером, после чего снэпшот покрытия отправляется назад на ваш компьютер. Получив его, вы можете изучить результаты покрытия так же, как после локального анализа покрытия.

Атрибутные фильтры дополняют возможности фильтров покрытия

Фильтры покрытия

Иногда вам не нужны данные о покрытии в масштабе всего решения. Например, вам может быть неинтересна статистика по покрытию кода с атрибутом ObsoleteAttribute или кода определенного прошлого проекта.

В этом случае вы можете установить глобальные или ограниченные конкретным решением фильтры покрытия, основанные на наименованиях проектов, пространств имен, типов или членов типов. Также доступны атрибутные фильтры, ограничивающие сбор информации о покрытии кодом, который отмечен (или не отмечен) определенными атрибутами.

Если вы исключаете определенные элементы из результатов покрытия, dotCover моментально пересчитывает статистику

Исключение узлов из дерева покрытия

Помимо фильтров, которые вы устанавливаете заранее или применяете к открываемым решениям, вы можете исключать элементы в ходе непосредственной работы с результатами оценки покрытия.

Если данные о покрытии уже собраны, вы можете исключить определенный узел из дерева покрытия и (по желанию) создать перманентный фильтр покрытия. Как только вы сделаете это, dotCover моментально пересчитает статистику покрытия.

dotCover экспортирует данные о покрытии в ряд форматов, в числе которых XML, HTML и JSON

Отчеты в различных форматах

dotCover помогает обрабатывать данные о покрытии согласно вашим потребностям.

Возможность экспорта в ряд форматов, в числе которых HTML, XML, JSON и XML для NDepend, позволяет вам делиться отчетами по покрытию с остальными участниками команды или передавать информацию о покрытии во внешние сервисы.

dotCover можно использовать для ручного тестирования

Оценка покрытия кода для ручного тестирования

Помимо оценки покрытия юнит-тестами dotCover может выполнять анализ покрытия для .NET-приложений, запускаемых из Visual Studio.

Это позволяет специалисту-тестировщику симулировать определенный сценарий использования и фиксировать, какие части кода выполнялись в ходе данного сценария. Функции сохранения и объединения снэпшотов покрытия обеспечивают возможность выполнения необычных тестовых кейсов.

Подсветка покрытия кода в TeamCity в окружении непрерывной интеграции

Анализ покрытия в окружении непрерывной интеграции

dotCover является отличным дополнением к серверам непрерывной интеграции, что в особенности актуально для собственного продукта JetBrains — TeamCity.

Прежде всего, благодаря дополнению TeamCity для Visual Studio, dotCover может получать данные о покрытии с сервера TeamCity — без выполнения анализа покрытия на локальной машине.

С другом стороны, движок анализа покрытия dotCover поставляется в комплекте с бесплатной версией TeamCity, что помогает планировать запуски анализа покрытия в рамках процесса непрерывной интеграции и генерировать отчеты по покрытию на стороне сервера. TeamCity понимает данные, выводимые консольным раннером dotCover, и подсвечивает выводимые им ошибки и предупреждения в журнале сборки.

Скачать

Бесплатная пробная версия на 30 дней