На этой странице рассказывается о свежих обновлениях и изменениях в dotCover.
В этом релизе мы сделали dotCover быстрее и удобнее, сосредоточившись на современных и востребованных технологиях. Чтобы снизить нагрузку и ускорить анализ покрытия, мы отказались от поддержки функций и технологий, которые по нашей статистике почти не используются.
dotCover больше не поддерживает проекты на Mono и Unity. Unity снова будет поддерживаться после перехода на CoreCLR.
Также прекращена поддержка анализа покрытия для устаревших или редко используемых приложений, включая:
Это позволит нам сосредоточить усилия на технологиях, которые актуальны для большинства пользователей.
Мы обновили инструмент командной строки, сделав его проще и ближе к современным сценариям разработки:
cover-dotnet теперь объединена с остальными в одну — dotcover cover, для всех типов таргетов. Если параметр --targetExecutable не указан, dotCover попробует автоматически определить нужный исполняемый файл dotnet. dotcover cover @args.txt. dotcover.exe удален из NuGet-пакета. Теперь CLI-раннер доступен только как глобальный или локальный .NET-инструмент (требуется .NET 6 или новее). Мы упростили систему фильтров, оставив только наиболее востребованные варианты. Чтобы снизить сложность и упростить поддержку, из интерфейса и CLI удалены:
Мы переработали процесс непрерывного тестирования, чтобы его было удобнее использовать.
Раньше каждый сеанс юнит-тестирования можно было преобразовать в сеанс непрерывного тестирования. Это вызывало путаницу, когда были запущены несколько сеансов.
В новой версии существует только один отдельный сеанс непрерывного тестирования. Благодаря этому разобраться в процессе тестирования и управлять им стало проще.
В dotCover добавлена новая иконка непрерывного тестирования в ReSharper и Rider. Она показывает текущее состояние тестирования, в том числе наличие тестов, которые завершились с ошибкой. Кроме того, она дает доступ к нескольким быстрым действиям: отключение и включение непрерывного тестирования, просмотр результатов покрытия, переключение подсветки кода и т. п.
В новой версии можно выполнять анализ покрытия юнит-тестов и приложений на основе фреймворка MAUI. В настоящее время dotCover поддерживает только десктопные приложения WinUI для .NET 7.0+ в Windows. Это относится и к автономному dotCover, и к dotCover в ReSharper и Rider.
Мы улучшили подсветку кода в dotCover, встроенном в Rider и ReSharper: добавили новые цвета фона и новую иконку на полях редактора для частично покрытых строк, а также внесли некоторые другие небольшие изменения.
Инструменты командной строки dotCover теперь поставляются в виде кросс-платформенного инструмента для фреймворка .NET.
Этот инструмент используется по умолчанию в сценариях CI/CD, заменяя прежний.
Теперь непрерывное тестирование можно запустить, просто нажав нужное сочетание клавиш. Раньше сделать это напрямую было нельзя: запуск происходил при сборке или сохранении проекта. Эта функция доступна и в Visual Studio с ReSharper, и в JetBrains Rider.
Теперь dotCover можно использовать в Windows на процессорах ARM64. Это относится ко всем версиям dotCover: и к автономной версии, и к инструменту, запускаемому в Rider, Visual Studio и из консоли.
Теперь можно использовать консольную версию dotCover в Linux на процессорах ARM32. Поддерживаемые фреймворки — .NET Core 3.1 и .NET 5.0–7.0.
В контекстные меню dotCover в редакторе кода и окне Unit Test Coverage добавлено действие Show Covering Tests. При выборе этого действия появляется всплывающее окно со всеми тестами, покрывающими код. Во всплывающем окне можно запустить сессию анализа покрытия.
В новой версии dotCover копирует только сборки и символьные файлы, необходимые для непрерывного тестирования в Visual Studio и JetBrains Rider. В результате повышается общая производительность dotCover, особенно на больших проектах, поскольку не приходится копировать рабочую директорию целиком. При необходимости в настройках dotCover можно настроить фильтр файлов для теневого копирования.
Раньше, чтобы проанализировать покрытие кода тестами Unity, нужно было перезапустить движок Unity с включенной поддержкой анализа покрытия. Начиная с этой версии, перезапускать Unity не нужно, а анализ покрытия тестами поддерживается по умолчанию.
Чтобы быстро просмотреть результаты анализа покрытия для текущего файла, используйте значок щита на скроллбаре. Нажав на этот значок, вы перейдете к непокрытым операторам.
Консольный инструмент dotCover теперь поддерживает Alpine версий 3.13–3.15. Поддерживаются следующие процессоры и фреймворки:
Мы добавили новые виды отчетов с информацией о покрытии для каждого теста: FileCoverageXml, DetailedFileCoverageXml, FileCoverageJson и DetailedFileCoverageJson.
Новые отчеты включают три секции:
Files — с информацией о покрытых исходниках. Подробные отчеты также содержат информацию о покрытых диапазонах в каждом файле. TestLists — с информацией о тестах, сгруппированной по наборам тестов. Tests — с подробной информацией по каждому тесту.
Теперь вы можете исключать выборочные строки или фрагменты кода из анализа покрытия при помощи комментариев. Есть несколько способов сделать это:
// dotcover disable
var i = 1;
var j = 10;
// dotcover enable
/* dotcover disable */ var i = 1; /* dotcover enable */
var i = 1; // dotCover disable this line
// dotcover disable next line
var j = 100;
Какой бы вариант вы ни выбрали, нужно указать пакет JetBrains.dotCover.MSBuild NuGet в качестве зависимости. Он необходим только при разработке и не будет включаться в проект во время исполнения.
Мы улучшили обработку данных о покрытии. В частности, теперь при запуске из консоли (с IncludePerTest=true) отчеты генерируются намного быстрее.
Консольный инструмент dotCover теперь работает на компьютерах с процессорами Apple Silicon. Он поддерживает анализ покрытия приложений .NET 6 (нативный режим) и приложений .NET 5 (режим «Rosetta 2»).
В dotCover Rider появилась новая метрика Code Vision, показывающая количество пройденных и упавших тестов для каждого члена типа. Через уведомления Code Vision теперь можно запускать и отлаживать тесты, а также считать покрытие.
Глобальный .NET-инструмент теперь поддерживает команды merge и report.
Консольный инструмент dotCover стал работать быстрее — анализ покрытия теперь занимает меньше времени.
Инструмент запуска dotCover из консоли умеет собирать информацию о каждом из тестов и включать ее в генерируемые отчеты. В данный момент поддерживается запуск тестов при помощи dotnet test, dotnet vstest, vstest.console.exe. Пример: dotCover.exe dotnet --output=AppCoverageReport.xml --reportType=XML --IncludePerTestInfo=Method -- test "C:\MyProject\MainTests.csproj"
Теперь ReSharper позволяет настраивать фильтры покрытия в Visual Studio так же, как в JetBrains Rider.
Вы можете установить и использовать инструмент запуска dotCover из консоли как глобальный dotnet-инструмент: dotnet tool install --global JetBrains.dotCover.GlobalTools --version 2021.1.0
Используйте его для анализа покрытия кода ваших проектов .NET Core и юнит-тестов.