MSTest.TestAdapter
対MSTest.TestFramework
の実際の違いは何ですか?いつどれが必要ですか?
NuGetの説明では、次のことがわかります。
MSTest.TestAdapter
MSTest Frameworkベースのテストを検出および実行するためのアダプター。
MSTest.TestFramework
これは、Microsoftのテストフレームワークの進化版であるMSTest V2です。 +テストを検出して実行するには、MSTest.TestAdapterをインストールします。
まあ、あまり役に立たず、どちらを使うべきかわからないので、私はいつも両方をインストールします。奇妙なことに、私のテストプロジェクトの1つにはMSTest.TestFramework
(偶然だと思います)しかなく、ReSharperはまだテストを検出できます。
これらのパッケージに関する私の質問は次のとおりです。
TestAdapter
がなくても機能するのはなぜですか?TestFramework
で何ができますか?これはいつ必要ですか?GitHubのプロジェクトページはどちらにも役立ちます。唯一のリンク
MSTest V2の詳細については、こちらをご覧ください こちら 。
それがどれだけ素晴らしいか、そしてオープンソースであるかだけを述べているページにナビゲートしますが、どちらのパッケージについても具体的なことは何もありません。
そのため、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には独自のコマンドラインランナーがあり、テストアダプターなしで単体テストプロジェクトを実行できます。
本当に両方をインストールする必要があるのですか?
いいえなぜ? (下記を参照)
TestAdapterがなくても機能するのはなぜですか?
MSTestフレームワークを認識でき、MSTest Frameworkテストを検出して実行できる他のアダプター/ランナーがあります。
TestFrameworkで何ができますか?
したがって、一般に、テストフレームワークは、テストを作成/作成するために使用されるものであり、アダプター/ランナーは、検出されたテストを発見して実行します。
これはいつ必要ですか?
複数のフレームワークとアダプター/ランナーがあり、選択したものを使用します。
MsTest.TestFrameworkには、属性とアサートを含むコアフレームワークが含まれています。 MsTest.TestAdapterを使用すると、MsTestベースのテストを検出して実行できます。たとえば、[TestMethod]に関連付けられたメソッドを識別して実行します。