ビジュアルスタジオ2013には、1つのWebプロジェクト、1つのライブラリプロジェクト、および1つの単体テストプロジェクトで構成された簡単なソリューションがあります。私がソリューションを開いてユニットテストを実行しようとすると、ビジュアルスタジオでは検出されません。テストを実行するには、メニューに移動して[Test] - > [Run] - > [Run all tests]を選択するか、テストエクスプローラウィンドウを開きます。これらの方法では、Visual Studioはソリューションのテストを見つけることができません。
最初に簡単な単体テストプロジェクトを作成してテストを実行しようとすると、Visual Studioはテストを発見して実行することができます。その後、以前のソリューションのビジュアルスタジオを開くと、すべてのテストが検出されます。私は自分のソリューションを保存しようとしていますが、最初に単体テストプロジェクトを作成せずに、閉じてから再度開くと、ビジュアルスタジオはテストを再度見つけることができません。これは非常に奇妙な振る舞いです。なぜこれが起こっているのか私にはわかりません。
私はかつてこのプロジェクトでビジュアルスタジオチームの基盤と統合されたソース管理gitを使っていた一人で働いていました。 Visual Studioが単体テストを発見できないという問題は、新しい要素がプロジェクトに登場したとき、およびオンラインでソース管理を介してソリューションを再作成する必要があるときに始まります。これ以前は、すべてのテストは常にビジュアルスタジオによって発見されていました。
単体テストを作成するために、私はdll Microsoft.VisualStudio.QualityTools.UnitTestFrameworkを使います。私のビジュアルスタジオのバージョンは次のとおりです。Webバージョン12.0.30723.00アップデート3のMicrosoft Visual Studio Express2013。私の.netフレームワークのバージョンは4.5.50938です。
私のテストはすべてこのようなものです。
[TestClass]
public class Service1Test
{
[TestMethod]
public void Test1()
{
Assert.IsTrue(True);
}
}
テストが正しく表示されるようにするために、時々しなければならないことに気付いたことがいくつかあります。
あなたのソリューションが保護されたドライブにあり、あなたがリード/ライトするために管理者アクセスを必要とするなら、時々テストの一部だけが上がることがあります。その場合はVSを管理者として実行してください。
解決策が64ビットの場合は、[テスト] - [テスト設定] - [デフォルトのプロセッサアーキテクチャ]がx64に設定されていることを確認してください。時にはそれはx86に設定されます。 x64に設定してから再構築してください。
テストエクスプローラーが再起動するため、Visual Studioを再起動するだけでうまくいくことがあります。
実際にテストプロジェクト/ソリューションを構築することを忘れないでください。 (残りのプロジェクトでビルドしたい場合は、ソリューションを右クリックし、[プロパティ]> [構成プロパティ]> [構成]>テストプロジェクトの[ビルド]ボックスをオンにします)
テストがテストクラスのpublic
セクションにあることを確認します。
NUnitを使用している場合は、最初にNUnit Adapterを必ずダウンロードしてください。
ツール→拡張機能とアップデート…→オンラインと進み、 "NUnit Test Adapter"を検索します。
テストクラスがpublic
であることを確認してください。また、他のクラスを参照している場合は、同じことを確認してください。
また、アサートがない場合や[TestMethod]
でテストを装飾していない場合は、テストが認識されないことがあります。
さらに2つのことがあります:1)非同期ユニットテストはせいぜいおかしな振る舞いをしますが、最悪の場合はどれもしません。 この記事 byStephen Clearyをご覧になり、興味がある場合はそこから続けてください。
2)NUnitを使用していて同じ問題に遭遇した場合、Nunitでは[TestCase]
ではなく[TestMethod]
であることを覚えておいてください。
上記のことを説明したので、ここに article コードプロジェクトに投稿しました。MSTest
とNUnit
の両方を付けておきます。
私は同じ問題を抱えていましたが、他の解決策はどれもうまくいきませんでした。私はNUnit 3フレームワークを2アダプタで使用していたことがわかりました。
NUnit 3を使用している場合は、「機能拡張とアップデート」に進み、NUnit3テストアダプタをインストールしてください。
XUnitユーザーはTest Explorerウィンドウにテストが表示されなくなったことに気付くかもしれません。テストを再び発見可能にするには、 この重要なヒント を試してください。
テストの検出や実行に問題がある場合は、Visual Studio内のランナーキャッシュが破損している可能性があります。このキャッシュをクリアするには、Visual Studioのすべてのインスタンスをシャットダウンしてから、フォルダー%TEMP%\ VisualStudioTestExplorerExtensionsを削除します。また、プロジェクトが単一バージョンのVisual StudioランナーNuGetパッケージ(xunit.runner.visualstudio)に対してのみリンクされていることも確認してください。
私は時々この問題を抱えています。私にとってうまくいくのは、Visual Studioをシャットダウンしてフォルダに移動することです。
%LocalAppData%\Microsoft\VisualStudio\12.0\ComponentModelCache
内容を削除します。
Visual Studioを開いてプロジェクトを再度読み込むと、Test Explorerにテストが戻ってきます。
将来のグーグルにとって、私はこれを引き起こしたまれなシナリオを持っていました。
私の基本テストクラスには、TestContextという名前のプロパティがありました。これはMSTestの予約されたTestContextプロパティと干渉し、私のすべてのテストはVS/Resharperから隠されました(ベースから継承しなかったもの)。
私の問題は、私のユニットテストの方法がvoidではなく、パラメータを受け取っていたからです。
async void
としてマークされたユニットテストメソッドはVS Test Explorerによって発見されないことがわかりました。これは、VSがテストの終了を待ってそれが成功したかどうかを判断する方法がないためと思われます。非同期で実行するためのテストメソッドが絶対に必要な場合は、async Task
のようにTaskを返すようにしてください。これで問題が解決したことがわかりました。
すべてのプロジェクトをx86/x 64ではなくMSIL(Any CPU)としてビルドしてみてください。私のために奇妙に働いた
AndyGのソリューションは機能しますが、より持続的なソリューションは、PreferredToolArchitecture環境変数を "x64"に設定することです。
Visual StudioでネイティブのAMD64ツールチェーンを使用する方法
または
私はどうにかして私のものを追加することができたでしょう
public static void TestMethod1(){}
私は静的を削除したら作業を開始しました....
私は同じ問題に直面していました、そして再び私は(この状況は以前にも起こりました)、ソリューションのプラットフォームメニューで "Mixed Platform"を選択すること、そして他の答えがうまくいくことを思い出しました。
議論のために、依存関係が適切に構築されるように(私の場合のように)テストプロジェクトでX64アーキテクチャを使用する必要があるとだけ言いましょう。あなたはTest - Test Settingsメニューの下であなたのデフォルトプロセッサアーキテクチャを修正する必要があるかもしれません。これをX64に設定すると、テストエクスプローラはMicrosoft.VisualStudio.TestTools.UnitTestingを使用してテストを見つけることができました。
このパッケージだけをインストールする必要があります。
NUnit TestAdapter
私はまったく同じ問題を抱えていました。
これは、私が自分のプロジェクトに追加したNUnitのバージョン(3.2.0)とインストールしたテストアダプタ(2.0.0)の互換性がないためです。
修正するには、 "Tools> Extensions and Updates"を使ってNUnit3 Test Adapterを検索してください。その後、私のテストが見つかりました。
乾杯
長いリストに追加して申し訳ありませんが、まったく別の問題がありました。まず、Test Explorerで[Run All]をクリックしてからVisual Studioのビルド出力ウィンドウを見たときに、私がこの問題を発見したことを述べたいと思います。後でメッセージが消えるので、あなたは積極的にそれを見なければなりません。
問題に関しては、テストのスキャン中にDLLがロードされ、そのテストタイプが列挙されるように見えます。これにより参照がロードされ、このプロセス中に何らかの障害が発生した場合、テストはエクスプローラに表示されません。テストDLLが正常にロードされないようにする2つの問題がありました。
テストエクスプローラウィンドウにテストを表示するには、パッケージマネージャでは利用できなかったNUnit3テストアダプタ3.0をインストールする必要がありました。
からダウンロードした https://visualstudiogallery.msdn.Microsoft.com/0da0f6bd-9bb6-4ae3-87a8-537788622f2d
私の場合と似たような類似の事例は見られなかったので、これに遭遇したばかりです。
私のテストプロジェクトの.csproj
ファイルでは、NUnit参照プライバシーはFalse
に設定されていました:
<Reference Include="nunit.framework, Version=2.6.4.14350, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
<HintPath>..\packages\NUnit.2.6.4\lib\nunit.framework.dll</HintPath>
<Private>False</Private>
</Reference>
<Private>
をTrue
に設定した後はうまくいきました。
ネットワーク共有または共有の一部であるマイドキュメントディレクトリからVisual Studio(私の場合はVS 2015コミュニティ)ソリューションをロードすると、この問題に遭遇します。 。私は、ソリューションとその基礎となるプロジェクトをローカルフォルダに移動することで解決しました。
プロジェクトメニュー> Configuration Managerに移動して、テストプロジェクトのプラットフォームがプロジェクトの他の部分と一致していることを確認し、ビルドして再構築することを確認します。
async Task
単体テストを作成するとすぐに、Visual Studioで問題を発見し、そのソースを見つけることができなくなり、デバッグできなくなります。
この動作を引き起こす PostSharpのバグ があり、私が使っていたテストプロジェクトではPostSharpが有効になっていました。
私の場合の解決策は、単体テストプロジェクトに対してPostSharpを無効にすることでした。<PropertyGroup>
要素の次の行をcsproj
プロジェクトファイルの先頭に配置します。
<SkipPostSharp>True</SkipPostSharp>
同じ問題がありました。テストは突然発見されなくなりました。
Nunit Test Adapterはどういうわけか無効になっていました。拡張機能マネージャで[有効にする]をクリックして修正しました。
私の場合は、2つのNuGetパッケージをアップデートしなければなりませんでした。 - MSTest.TestAdapter - MSTest.TestFramework
TFS 2015でのテストでも同じ問題がありました。私のテストで問題になったのは、もう表示されないということです。テストアダプタはテストを見つけることができませんでした。 Microsoft.VisualStudio.QualityTools.UnitTestFrameworkのすべての参照を削除したところ、再び表示されました。私の答えが誰かに役立つことを願っています
私の場合、問題は私のclass
がabstract
としてマークされていたためです。
abstract
キーワードを削除するだけです。
カット/ペーストエラーが発生し、テストの前に[Test Method]
を中断したことに気付くまで、私は同じ問題を抱えていました。
別の解決策:
コマンドプロンプトを開き、setと入力して、PROCESSOR_ARCHITECTUREが正しく設定されていることを確認します。必要に応じてx86またはAMD64に変更します。
私は同じ問題に遭遇しました。そして調査し、DLLが構築されていないことを見つけ、そして正しいフォルダに入れました。設定を変更するとすぐに表示されます。 - プロジェクトのビルドオプション、どのフォルダを使うべきか - ビルドメニューエントリのビルド設定は、チェックする必要があります。
それは私のためにそれを修正しました。
私の場合、ドライバが[SetUp]に入るのをやめた後、NUnitを2.Xから3.Xに更新しました。私はNuGetからNUnit 3アダプタをインストールしようとしましたが、それは助けにはなりませんでした。それから私はTestDriven(3.8)の私のそれから現在のバージョンをアンインストールし、代わりに3.10をインストールしました。それは(再び)働き始めました。
すべてのプロジェクトが同じ設定で実行されていることを確認してください。他のプロジェクトで決定したように、あなたのプロジェクトのProperties => Debug => Platform inドロップダウンリストの下で適切なプラットフォーム(私にとっては "Any CPU")を選択してください。
Visual Studio 2013.5では、ソリューション内の\ TestResultsディレクトリをクリアすることが役に立ちました。 Visual Studioは、検出されたテストを格納しているmdfファイルを破損したため、単体テストの検出を妨げました。
プロジェクトがテストプロジェクトとしてマークされていることを確認してください。下記のxmlをcsprojプロジェクトファイルに追加してください。
<Project>
...
<ItemGroup>
<Service Include="{82a7f48d-3b50-4b1e-b82e-3ada8210c358}" />
</ItemGroup>
...
</Project>