web-dev-qa-db-ja.com

Visual Studio 2013が単体テストを検出しない

ビジュアルスタジオ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); 
    } 
}
145
miguelbgouveia

テストが正しく表示されるようにするために、時々しなければならないことに気付いたことがいくつかあります。

  1. あなたのソリューションが保護されたドライブにあり、あなたがリード/ライトするために管理者アクセスを必要とするなら、時々テストの一部だけが上がることがあります。その場合はVSを管理者として実行してください。

  2. 解決策が64ビットの場合は、[テスト] - [テスト設定] - [デフォルトのプロセッサアーキテクチャ]がx64に設定されていることを確認してください。時にはそれはx86に設定されます。 x64に設定してから再構築してください。

  3. テストエクスプローラーが再起動するため、Visual Studioを再起動するだけでうまくいくことがあります。

  4. 実際にテストプロジェクト/ソリューションを構築することを忘れないでください。 (残りのプロジェクトでビルドしたい場合は、ソリューションを右クリックし、[プロパティ]> [構成プロパティ]> [構成]>テストプロジェクトの[ビルド]ボックスをオンにします)

  5. テストがテストクラスのpublicセクションにあることを確認します。

208
AndyG

NUnitを使用している場合は、最初にNUnit Adapterを必ずダウンロードしてください。

ツール→拡張機能とアップデート…→オンラインと進み、 "NUnit Test Adapter"を検索します。

79
Farukh

テストクラスがpublicであることを確認してください。また、他のクラスを参照している場合は、同じことを確認してください。

また、アサートがない場合や[TestMethod]でテストを装飾していない場合は、テストが認識されないことがあります。

さらに2つのことがあります:1)非同期ユニットテストはせいぜいおかしな振る舞いをしますが、最悪の場合はどれもしません。 この記事 byStephen Clearyをご覧になり、興味がある場合はそこから続けてください。

2)NUnitを使用していて同じ問題に遭遇した場合、Nunitでは[TestCase]ではなく[TestMethod]であることを覚えておいてください。

上記のことを説明したので、ここに article コードプロジェクトに投稿しました。MSTestNUnitの両方を付けておきます。

59
Noctis

私は同じ問題を抱えていましたが、他の解決策はどれもうまくいきませんでした。私はNUnit 3フレームワークを2アダプタで使用していたことがわかりました。

NUnit 3を使用している場合は、「機能拡張とアップデート」に進み、NUnit3テストアダプタをインストールしてください。

28
Frank

XUnitユーザーはTest Explorerウィンドウにテストが表示されなくなったことに気付くかもしれません。テストを再び発見可能にするには、 この重要なヒント を試してください。

テストの検出や実行に問題がある場合は、Visual Studio内のランナーキャッシュが破損している可能性があります。このキャッシュをクリアするには、Visual Studioのすべてのインスタンスをシャットダウンしてから、フォルダー%TEMP%\ VisualStudioTestExplorerExtensionsを削除します。また、プロジェクトが単一バージョンのVisual StudioランナーNuGetパッケージ(xunit.runner.visualstudio)に対してのみリンクされていることも確認してください。

Type in TEMP to find target folder

12
SushiGuy

私は時々この問題を抱えています。私にとってうまくいくのは、Visual Studioをシャットダウンしてフォルダに移動することです。

%LocalAppData%\Microsoft\VisualStudio\12.0\ComponentModelCache

内容を削除します。

Visual Studioを開いてプロジェクトを再度読み込むと、Test Explorerにテストが戻ってきます。

11
Mariusz Gorzoch

将来のグーグルにとって、私はこれを引き起こしたまれなシナリオを持っていました。

私の基本テストクラスには、TestContextという名前のプロパティがありました。これはMSTestの予約されたTestContextプロパティと干渉し、私のすべてのテストはVS/Resharperから隠されました(ベースから継承しなかったもの)。

5
Adam Behrle

私の問題は、私のユニットテストの方法がvoidではなく、パラメータを受け取っていたからです。

4
alansiqueira27

async voidとしてマークされたユニットテストメソッドはVS Test Explorerによって発見されないことがわかりました。これは、VSがテストの終了を待ってそれが成功したかどうかを判断する方法がないためと思われます。非同期で実行するためのテストメソッドが絶対に必要な場合は、async TaskのようにTaskを返すようにしてください。これで問題が解決したことがわかりました。

4
cookiemonster

私にとっては、「ソリューション構成」を(Releaseではなく)Debugに変更していました。

4
zook2005

すべてのプロジェクトをx86/x 64ではなくMSIL(Any CPU)としてビルドしてみてください。私のために奇妙に働いた

3
Alfons

AndyGのソリューションは機能しますが、より持続的なソリューションは、PreferredToolArchitecture環境変数を "x64"に設定することです。

Visual StudioでネイティブのAMD64ツールチェーンを使用する方法

または

  • コントロールパネル|システムとセキュリティシステム|詳細システム設定|環境変数
  • PreferredToolArchitecture = x64
  • DefaultToolArchitecture = Native64Bit
  • PROCESSOR_ARCHITECTURE = x64
  • ProcessorArchitecture = x 64
3
Kevin Johnsrude

私はどうにかして私のものを追加することができたでしょう

public static void TestMethod1(){}

私は静的を削除したら作業を開始しました....

2
fox

私は同じ問題に直面していました、そして再び私は(この状況は以前にも起こりました)、ソリューションのプラットフォームメニューで "Mixed Platform"を選択すること、そして他の答えがうまくいくことを思い出しました。

2
Jeferson

Nugetパッケージマネージャに行き、以下のようにNunitアダプタをダウンロードしてください。 enter image description here

2
Debendra Dash

議論のために、依存関係が適切に構築されるように(私の場合のように)テストプロジェクトでX64アーキテクチャを使用する必要があるとだけ言いましょう。あなたはTest - Test Settingsメニューの下であなたのデフォルトプロセッサアーキテクチャを修正する必要があるかもしれません。これをX64に設定すると、テストエクスプローラはMicrosoft.VisualStudio.TestTools.UnitTestingを使用してテストを見つけることができました。

1
Dominic Hartjes

2日を過ごした後...上記のどれも私のために働きませんでした。唯一の「解決策」は次のとおりです。プロジェクトプロパティ - >ビルドタブに移動します。次に、ペインの右下隅にある[詳細設定]ボタンをクリックします。 「デバッグ情報」を「フル」に変更して、「OK」をクリックします。

これがスクリーンショットです。 enter image description here

enter image description hereenter image description here

1
curiousBoy

このパッケージだけをインストールする必要があります。

NUnit TestAdapter NUnit TestAdapter

1
Sandy_Vu

私はまったく同じ問題を抱えていました。

これは、私が自分のプロジェクトに追加したNUnitのバージョン(3.2.0)とインストールしたテストアダプタ(2.0.0)の互換性がないためです。

修正するには、 "Tools> Extensions and Updates"を使ってNUnit3 Test Adapterを検索してください。その後、私のテストが見つかりました。

乾杯

1
Francis Smith

長いリストに追加して申し訳ありませんが、まったく別の問題がありました。まず、Test Explorerで[Run All]をクリックしてからVisual Studioのビルド出力ウィンドウを見たときに、私がこの問題を発見したことを述べたいと思います。後でメッセージが消えるので、あなたは積極的にそれを見なければなりません。

問題に関しては、テストのスキャン中にDLLがロードされ、そのテストタイプが列挙されるように見えます。これにより参照がロードされ、このプロセス中に何らかの障害が発生した場合、テストはエクスプローラに表示されません。テストDLLが正常にロードされないようにする2つの問題がありました。

  • 設定ファイルにまだバインディングリダイレクトが残っていました(テストプロジェクトで参照されていたものよりも低いバージョンのNHiberateにリダイレクトしています)。
  • 競合するアセンブリ参照(第2レベルの参照は読み込めません)。 AsmSpy ところで、これらを探すのに最適なツールです。
1
Martijn Evens

テストエクスプローラウィンドウにテストを表示するには、パッケージマネージャでは利用できなかったNUnit3テストアダプタ3.0をインストールする必要がありました。

からダウンロードした https://visualstudiogallery.msdn.Microsoft.com/0da0f6bd-9bb6-4ae3-87a8-537788622f2d

1
Mikal Madsen

私の場合と似たような類似の事例は見られなかったので、これに遭遇したばかりです。

私のテストプロジェクトの.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に設定した後はうまくいきました。

1
Kevin Giszewski

ネットワーク共有または共有の一部であるマイドキュメントディレクトリからVisual Studio(私の場合はVS 2015コミュニティ)ソリューションをロードすると、この問題に遭遇します。 。私は、ソリューションとその基礎となるプロジェクトをローカルフォルダに移動することで解決しました。

1
Ton Snoei

プロジェクトメニュー> Configuration Managerに移動して、テストプロジェクトのプラットフォームがプロジェクトの他の部分と一致していることを確認し、ビルドして再構築することを確認します。

1
user5224229

async Task単体テストを作成するとすぐに、Visual Studioで問題を発見し、そのソースを見つけることができなくなり、デバッグできなくなります。

この動作を引き起こす PostSharpのバグ があり、私が使っていたテストプロジェクトではPostSharpが有効になっていました。

私の場合の解決策は、単体テストプロジェクトに対してPostSharpを無効にすることでした。<PropertyGroup>要素の次の行をcsprojプロジェクトファイルの先頭に配置します。

<SkipPostSharp>True</SkipPostSharp>

0
Adam Goodwin
  • 私は、ソリューションが構築されていないとユニットテストが見つからないことを知っているので、それを試す(ソリューションを構築する)必要がありますが、その解決策はヘルプデスクがあなたのコンピュータに接続されているかどうかを尋ねるようなものです...
  • クリーンな再構築で問題が解決しなかった後は、フルバッチビルドを実行しても問題は解決しませんでした。
0
amalgamate

同じ問題がありました。テストは突然発見されなくなりました。

Nunit Test Adapterはどういうわけか無効になっていました。拡張機能マネージャで[有効にする]をクリックして修正しました。

0
HeatherD

私の場合は、2つのNuGetパッケージをアップデートしなければなりませんでした。 - MSTest.TestAdapter - MSTest.TestFramework

0
Magic Mike

TFS 2015でのテストでも同じ問題がありました。私のテストで問題になったのは、もう表示されないということです。テストアダプタはテストを見つけることができませんでした。 Microsoft.VisualStudio.QualityTools.UnitTestFrameworkのすべての参照を削除したところ、再び表示されました。私の答えが誰かに役立つことを願っています

0
Joerg

私の場合、問題は私のclassabstractとしてマークされていたためです。

abstractキーワードを削除するだけです。

0
glautrou

カット/ペーストエラーが発生し、テストの前に[Test Method]を中断したことに気付くまで、私は同じ問題を抱えていました。

0
forforf

別の解決策:

コマンドプロンプトを開き、setと入力して、PROCESSOR_ARCHITECTUREが正しく設定されていることを確認します。必要に応じてx86またはAMD64に変更します。

ソース: https://connect.Microsoft.com/VisualStudio/feedback/details/873170/vs2012-vstest-console-exe-error-incompatible-target-platform-settings-x86-with-system-architecture-プロセッサアーキテクチャが設定されていないときに発生する

0
Alfons

私は同じ問題に遭遇しました。そして調査し、DLLが構築されていないことを見つけ、そして正しいフォルダに入れました。設定を変更するとすぐに表示されます。 - プロジェクトのビルドオプション、どのフォルダを使うべきか - ビルドメニューエントリのビルド設定は、チェックする必要があります。

それは私のためにそれを修正しました。

0
kfn

私の場合、ドライバが[SetUp]に入るのをやめた後、NUnitを2.Xから3.Xに更新しました。私はNuGetからNUnit 3アダプタをインストールしようとしましたが、それは助けにはなりませんでした。それから私はTestDriven(3.8)の私のそれから現在のバージョンをアンインストールし、代わりに3.10をインストールしました。それは(再び)働き始めました。

0
Alex Konnen

すべてのプロジェクトが同じ設定で実行されていることを確認してください。他のプロジェクトで決定したように、あなたのプロジェクトのProperties => Debug => Platform inドロップダウンリストの下で適切なプラットフォーム(私にとっては "Any CPU")を選択してください。

0
Roni

Visual Studio 2013.5では、ソリューション内の\ TestResultsディレクトリをクリアすることが役に立ちました。 Visual Studioは、検出されたテストを格納しているmdfファイルを破損したため、単体テストの検出を妨げました。

0
MartijnK

プロジェクトがテストプロジェクトとしてマークされていることを確認してください。下記のxmlcsprojプロジェクトファイルに追加してください。

 <Project>
...
 <ItemGroup>
    <Service Include="{82a7f48d-3b50-4b1e-b82e-3ada8210c358}" />
  </ItemGroup>
...
</Project>
0
DonO