Сравнение Microsoft.Testing.Platform и VSTest

Microsoft.Testing.Platform — это упрощенная и переносимая альтернатива VSTest для выполнения тестов в командной строке в конвейерах непрерывной интеграции (CI), в обозревателе тестов Visual Studio и в Visual Studio Code. В этой статье вы узнаете о ключевых различиях между runner MSTest и VSTest.

Различия в выполнении теста

Тесты выполняются разными способами в зависимости от средства выполнения.

Выполнение тестов VSTest

VSTest поставляется с Visual Studio, пакетом SDK для .NET и автономным средством в пакете NuGet Microsoft.TestPlatform . VSTest использует исполняемый файл runner для выполнения тестов, который vstest.console.exeможно использовать непосредственно или через dotnet test.

Выполнение тестов Microsoft.Testing.Platform

Microsoft.Testing.Platform внедряется непосредственно в тестовый проект и не отправляет дополнительные исполняемые файлы. При запуске исполняемого файла проекта тесты выполняются. Дополнительные сведения о выполнении тестов Microsoft.Testing.Platform см. в обзоре Microsoft.Testing.Platform: запуск и отладка тестов.

Пространства имен и пакеты NuGet

Чтобы ознакомиться с Microsoft.Testing.Platform и VSTest, полезно понять пространства имен и пакеты NuGet, используемые каждым из них.

Пространства имен VSTest

VSTest — это коллекция средств тестирования, которые также называются платформой тестирования. Исходный код VSTest является открытым исходным кодом и доступен в репозитории microsoft/vstest GitHub. Код использует Microsoft.TestPlatform.* пространство имен.

VSTest является расширяемым и распространенные типы помещаются в пакет NuGet Microsoft.TestPlatform.ObjectModel .

Пространства имен Microsoft.Testing.Platform

Microsoft.Testing.Platform основан на пакете NuGet Microsoft.Testing.Platform и других библиотеках в Microsoft.Testing.* пространстве имен. Как и VSTest, Microsoft.Testing.Platform является открытым исходным кодом и имеет репозиторий GitHub microsoft/testfx .

Протокол связи (предварительная версия)

Примечание.

Обозреватель тестов Visual Studio поддерживает протокол Microsoft.Testing.Platform в предварительных версиях с 17.10. При выполнении и отладке тестов с помощью более ранних версий Visual Studio обозреватель тестов будет использовать vstest.console.exe и старый протокол для выполнения этих тестов.

Microsoft.Testing.Platform использует протокол на основе JSON-RPC для обмена данными между Visual Studio и процессом тестового запуска. Протокол задокументирован в репозитории MSTest GitHub.

VSTest также использует протокол связи на основе JSON, но он не основан на JSON-RPC.

Отключение нового протокола

Чтобы отключить использование нового протокола в обозревателе тестов, можно изменить csproj и удалить TestingPlatformServer эту возможность.

<ItemGroup>
    <ProjectCapability Remove="TestingPlatformServer" />
</ItemGroup>

Исполняемые объекты

VSTest поставляет несколько исполняемых файлов, в частности vstest.console.exe, testhost.exeи datacollector.exe. Однако MSTest внедряется непосредственно в тестовый проект и не отправляет другие исполняемые файлы. Исполняемый проект тестирования компилируется для размещения всех средств тестирования и выполнения всех задач, необходимых для выполнения тестов.