dotCover — это инструмент для юнит-тестирования и оценки покрытия кода, работающий непосредственно в Visual Studio и JetBrains Rider. Он помогает понять степень покрытия вашего кода юнит-тестами, предлагает множество удобных способов визуализировать покрытие кода и готов к использованию в окружении непрерывной интеграции. dotCover вычисляет и фиксирует покрытие кода на уровне операторов в приложениях, разрабатываемых под платформы .NET Framework, .NET Core, Mono и Mono for Unity.
dotCover — это плагин для Visual Studio и JetBrains Rider, позволяющий анализировать и визуализировать покрытие кода, не покидая редактор. В число его возможностей также входят юнит-тестирование и анализ результатов покрытия непосредственно в IDE, а также поддержка различных цветовых тем, новых иконок и меню.
dotCover поддерживает Visual Studio 2010–2019 и JetBrains Rider с версии 2018.2.
При работе в Visual Studio или JetBrains Rider на Windows, dotCover поддерживает проекты, разрабатываемые для поддерживаемых версий платформ .NET Framework, .NET Core, .NET, Mono 5.10 или более поздних, а также Unity 2018.3 или более поздних. На macOS и Linux dotCover можно использовать только в составе JetBrains Rider.
dotCover включает в себя инструмент запуска юнит-тестов, который также используется в другом продукте JetBrains для .NET-разработки — ReSharper.
Тест-ранер работает в Visual Studio / JetBrains Rider и позволяет управлять сессиями юнит-тестов. Он поддерживает ряд фреймворков юнит-тестирования из коробки: MSTest, NUnit и xUnit, а также MSpec (через плагин).
dotCover поддерживает практику «непрерывного тестирования» — современного рабочего процесса организации юнит-тестирования, в котором dotCover на ходу определяет, на какие юнит-тесты повлияли последние изменения вашего кода, после чего автоматически перезапускает эти тесты.
В разделе предпочтений вы можете настроить, как dotCover будет запускать такие тесты — при сохранении файла, сборке решения или в результате вашей прямой команды.
Режим непрерывного тестирования можно включить в любом сеансе юнит-тестирования. Это позволяет вам выбирать, какие тесты вы хотите выполнять непрерывно, а какие — традиционными образом.
Важнейшим сценарием использования dotCover является анализ покрытия кода юнит-тестами, то есть определение того, какие части бизнес-логики приложения охвачены юнит-тестами, а какие нет.
Вместе с результатами запуска юнит-тестов dotCover отображает дерево покрытия, показывающее, насколько тщательно охвачен юнит-тестами определенный проект, пространство имен, тип или член типа.
Для визуализации данных покрытия dotCover имеет возможность подсвечивать строки кода непосредственно в редакторе. Предусмотрена возможность переключения между подсветкой с помощью маркеров и цветного фона, также можно использовать оба варианта.
Обратите внимание: подсветкой отмечается не только покрытый и непокрытый код, но также и результаты покрывающих юнит-тестов. Зеленый цвет означает, что тесты были успешны, а красный — что по крайней мере в одном тесте, покрывающем оператор, произошел сбой. Серым цветом обозначается непокрытый код.
Одна из команд dotCover (вызываемая также сочетанием клавиш) позволяет увидеть, какие тесты покрывают определенную область кода, например класс, метод или свойство.
Вы можете вызвать команду из текстового редактора Visual Studio или из окна dotCover Дерево покрытия.
Из всплывающего окна со списком тестов покрытия можно перейти к любому из этих тестов. Кроме того, вы можете моментально запустить их или добавить в существующий сеанс юнит-тестирования.
Режим просмотра хот-спотов помогает определить наиболее рискованные методы в составе вашего решения. Хот-споты вычисляются на основании высокой цикломатической сложности методов и их низкого покрытия юнит-тестированием.
Иногда вам не нужны данные о покрытии в масштабе всего решения. Например, вам может быть неинтересна статистика по покрытию кода с атрибутом ObsoleteAttribute
или кода определенного прошлого проекта.
В этом случае вы можете установить глобальные или ограниченные конкретным решением фильтры покрытия, основанные на наименованиях проектов, пространств имен, типов или членов типов. Также доступны атрибутные фильтры, ограничивающие сбор информации о покрытии кодом, который отмечен (или не отмечен) определенными атрибутами.
Помимо фильтров, которые вы устанавливаете заранее или применяете к открываемым решениям, вы можете исключать элементы в ходе непосредственной работы с результатами оценки покрытия.
Если данные о покрытии уже собраны, вы можете исключить определенный узел из дерева покрытия и (по желанию) создать перманентный фильтр покрытия. Как только вы сделаете это, dotCover моментально пересчитает статистику покрытия.
dotCover помогает обрабатывать данные о покрытии согласно вашим потребностям.
Возможность экспорта в ряд форматов, в числе которых HTML, XML, JSON и XML для NDepend, позволяет вам делиться отчетами по покрытию с остальными участниками команды или передавать информацию о покрытии во внешние сервисы.
Помимо оценки покрытия юнит-тестами dotCover может выполнять анализ покрытия для .NET-приложений, запускаемых из Visual Studio.
Это позволяет специалисту-тестировщику симулировать определенный сценарий использования и фиксировать, какие части кода выполнялись в ходе данного сценария. Функции сохранения и объединения снэпшотов покрытия обеспечивают возможность выполнения необычных тестовых кейсов.
dotCover является отличным дополнением к серверам непрерывной интеграции, что в особенности актуально для собственного продукта JetBrains — TeamCity.
Прежде всего, благодаря дополнению TeamCity для Visual Studio, dotCover может получать данные о покрытии с сервера TeamCity — без выполнения анализа покрытия на локальной машине.
С другой стороны, движок анализа покрытия dotCover поставляется в комплекте с бесплатной версией TeamCity, что помогает планировать запуски анализа покрытия в рамках процесса непрерывной интеграции и генерировать отчеты по покрытию на стороне сервера. TeamCity понимает данные, выводимые консольным раннером dotCover, и подсвечивает выводимые им ошибки и предупреждения в журнале сборки.
Доступна бесплатная пробная версия на 30 дней