web-dev-qa-db-ja.com

MSTest.TestAdapterとMSTest.TestFrameworkの違いは何ですか?いつ必要ですか?

MSTest.TestAdapterMSTest.TestFrameworkの実際の違いは何ですか?いつどれが必要ですか?

NuGetの説明では、次のことがわかります。

MSTest.TestAdapter

MSTest Frameworkベースのテストを検出および実行するためのアダプター。

MSTest.TestFramework

これは、Microsoftのテストフレームワークの進化版であるMSTest V2です。 +テストを検出して実行するには、MSTest.TestAdapterをインストールします。


まあ、あまり役に立たず、どちらを使うべきかわからないので、私はいつも両方をインストールします。奇妙なことに、私のテストプロジェクトの1つにはMSTest.TestFramework(偶然だと思います)しかなく、ReSharperはまだテストを検出できます。

これらのパッケージに関する私の質問は次のとおりです。

  • 本当に両方をインストールする必要があるのですか?
  • TestAdapterがなくても機能するのはなぜですか?
  • TestFrameworkで何ができますか?これはいつ必要ですか?

GitHubのプロジェクトページはどちらにも役立ちます。唯一のリンク

MSTest V2の詳細については、こちらをご覧ください こちら

それがどれだけ素晴らしいか、そしてオープンソースであるかだけを述べているページにナビゲートしますが、どちらのパッケージについても具体的なことは何もありません。

16
t3chb0t

そのため、Visual StudioはVisual Studio Test Platformというフレームワークを使用してテストアダプターを読み込み、

https://github.com/Microsoft/vstest

テストケースを検出または実行するために、VSTestはプロジェクト構成に基づいてテストアダプターを呼び出します。 (だからこそ、NUnit/xUnit/MSTestでは、ユニットテストプロジェクトにテストアダプターNuGetパッケージをインストールするように求められます)。そのため、その目的のためにMSTest.TestAdapterが存在します。

MSTest.TestFramework自体は、テストフレームワークとそのコントラクトを実装しています。したがって、ユニットテストケースを作成してコンパイルするには、NuGet参照を追加する必要があります。その後、コンパイルされたプロジェクトとテストアダプターのみがVisual Studioで使用できます。

したがって、あなたの質問に対する最終的な答えは、「あなたは通常両方を必要とします」でしょう。

もちろん、@ Nkosiからのもう1つの答えは、Visual Studioを使用する予定がない場合に正しい場合があります。 MSTestには独自のコマンドラインランナーがあり、テストアダプターなしで単体テストプロジェクトを実行できます。

13
Lex Li

本当に両方をインストールする必要があるのですか?

いいえなぜ? (下記を参照)

TestAdapterがなくても機能するのはなぜですか?

MSTestフレームワークを認識でき、MSTest Frameworkテストを検出して実行できる他のアダプター/ランナーがあります。

TestFrameworkで何ができますか?

したがって、一般に、テストフレームワークは、テストを作成/作成するために使用されるものであり、アダプター/ランナーは、検出されたテストを発見して実行します。

これはいつ必要ですか?

複数のフレームワークとアダプター/ランナーがあり、選択したものを使用します。

3
Nkosi

MsTest.TestFrameworkには、属性とアサートを含むコアフレームワークが含まれています。 MsTest.TestAdapterを使用すると、MsTestベースのテストを検出して実行できます。たとえば、[TestMethod]に関連付けられたメソッドを識別して実行します。

1
Ravishankar S