Сравнение 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 внедряется непосредственно в тестовый проект и не отправляет другие исполняемые файлы. Исполняемый проект тестирования компилируется для размещения всех средств тестирования и выполнения всех задач, необходимых для выполнения тестов.