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

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

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

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

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

<TargetFramework>net35</TargetFramework>

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

2 ответа

Я знаю, что вопрос о 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 также может распознавать несколько целей и автоматически запускать тесты для каждой цели:

Оказывается, Microsoft наконец исправила это в Visual Studio 2019 (точно не знаю, когда).

Если вы укажете несколько целевых платформ:

<TargetFrameworks>netcoreapp2.1;net451</TargetFrameworks>

Теперь в графическом интерфейсе отображается:

и позволяет запускать тесты сразу на всех целевых платформах.

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

Используйте TargetFrameWorkVersion в файле runsettings, используя оператор "или".

Другие вопросы по тегам