web-dev-qa-db-ja.com

Visual Studio 2017/2019で特定のターゲットフレームワークの単体テストをどのように実行しますか?

私は新しい.csprojフォーマットが大好きです。それは恐ろしい(限定された)project.jsonよりもはるかに優れています。

しかし、私が解決しようとしていることが1つあります。 (複数の)テストプロジェクトを単一のマルチターゲットプロジェクトにマージしました。

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

ただし、VisualStudioのテストエクスプローラーにはターゲットフレームワークを選択するためのツールがないようです。常に最初のフレームワークを実行するだけです。回避策を見つけました-特定のフレームワークで<TargetFramework>要素を追加します...

<TargetFramework>net35</TargetFramework>

しかし、MSBuild(.csproj)ファイルを手動で編集せずにターゲットフレームワークを選択する方法はありますか?これを行うためのGUIのオプションを探しています。具体的には、テストをデバッグする前にフレームワークを切り替えるために.csprojファイルを編集したり、前にこの行を削除したりする必要がないようにする必要があります。リリース。

31
NightOwl888

MicrosoftがついにこれをVisualStudio 2019で修正したことが判明しました(正確な時期はわかりません)。

複数のターゲットフレームワークを指定する場合:

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

GUIに次のように表示されます。

enter image description here

また、すべてのターゲットプラットフォームで一度にテストを実行できます。

0
NightOwl888

質問がVSに関するものであることは知っていますが、複数のフレームワークをターゲットにする場合に役立つと思いますdotnet testsコマンド すべてのフレームワークのテストを実行します in <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

5
Andrii Litvinov

'または'演算子を使用して、runsettingsファイルでTargetFrameWorkVersionを使用します。

0
John Peters

現在の最良のオプションは、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でこれを行うためのUIは、実装が比較的簡単ですが、この回答の時点では実装されていません。

0
Michael Brown