Подтвердить что ты не робот

Как запустить модульные тесты для конкретной целевой платформы в Visual Studio 2017/2019?

Я действительно люблю новый формат .csproj. Это намного лучше, чем страшный (ограниченный) project.json.

Однако есть одна вещь, которую я пытаюсь выработать. Я объединил свои (несколько) тестовых проектов в один многоцелевой проект.

<TargetFrameworks>netcoreapp1.0;net40;net35</TargetFrameworks>

Но, похоже, в Test Explorer в Visual Studio нет инструментов для выбора целевой структуры - он всегда запускает первый. Я нашел обходное решение - добавить элемент <TargetFramework> с определенной структурой...

<TargetFramework>net35</TargetFramework>

Но есть ли способ выбрать целевую структуру, не прибегая к ручному редактированию файла MSBuild (.csproj)? Я ищу какой-то вариант в графическом интерфейсе для этого - в частности, поэтому мне не нужно забывать редактировать файл .csproj, чтобы переключать фреймворки перед отладкой теста или не забудьте удалить эту строку до выпуска.

4b9b3361

Ответ 1

Я знаю, что вопрос касается VS, но я считаю полезным, что при нацеливании на несколько платформ dotnet tests будет запускать тесты для всех платформ в <TargetFrameworks>:

> dotnet test
...
Test run for [projectPath]\bin\Debug\netcoreapp1.1\XUnitTestProject.dll(.NETCoreApp,Version=v1.1)
...
Test run for [projectPath]\bin\Debug\net461\XUnitTestProject.dll(.NETFramework,Version=v4.6.1)
...

NCrunch также может распознавать несколько целей и автоматически запускать тесты для каждой цели:

enter image description here

Ответ 2

Использовать TargetFrameWorkVersion в файле runsettings с помощью оператора 'or'.

Ответ 3

На данный момент лучшим вариантом является изменение порядка целевых фреймворков в csproj.

<PropertyGroup>
    <TargetFrameworks>netcoreapp2.1;net45;net46;net461;net462;net47</TargetFrameworks>
</PropertyGroup>

Если вы хотите отлаживать модульные тесты для среды Net45, вам нужно изменить ее на:

<PropertyGroup>
    <TargetFrameworks>net45;net46;net461;net462;net47;netcoreapp2.1</TargetFrameworks>
</PropertyGroup>

Пользовательский интерфейс для выполнения этого в Visual Studio будет относительно простым для реализации, но на данный момент они этого не сделали.