テストエクスプローラーで実行されていないテスト


146

私は現在、32のユニットテストを持つソリューションに取り組んでいます。私はリシャーパーテストランナーを使用しています。すべてのテストが実行され、すべてのテストが正しいテスト結果を示しています。今同僚が私に言った、Visual Studioテストエクスプローラーを使用して彼のマシンでテストが実行されていません。彼らは私のマシンでも機能していないので、ローカルの欠落しているファイルなどを除外できます。

テストエクスプローラーにはすべての単体テストが表示されますが、[すべて実行]をクリックすると、すべてのテストがグレー表示になり、テスト実行の結果が表示されません。

ここに画像の説明を入力してください

  • すべてのテストクラスは公開されています
  • すべてのテストクラスで[TestClass]属性が宣言されています
  • すべてのテストメソッドが[TestMethod]属性を使用しています
  • 生産性コードとテストプロジェクトの両方が.NET 3.5を対象としています。
  • 私はすでにクリーンビルドに私の解決策を試してみました、および/または全て削除しているobjbinDebugおよびReleaseフォルダ

このような行動を引き起こす可能性のあるヒントはすべて認めます。


3
ReSharperを更新します。このstackoverflow.com/questions/16011775/…を
kmhigashioka 2015年

18
テストが実行されなかった理由を VSが言ったら素晴らしいと思いませんか?ターゲットプラットフォームの不一致、テストアダプターの欠落、... :(
Bernhard Hofmann

1
ReSharperを使用するとはどこに記載されていますか?
アレックス75

5
@BernhardHofmann今すぐこのような問題が発生し、VSが[出力]> [テスト]でいくつかのエラーメッセージを出力していることがわかりました。重要。VSがそれらをより目立たせないことに苛立ちを感じますが、それはこのような状況で見る場所です。
JLRishe

2
あなたのすべては、この機能要求をupvotingに興味があるかもしれません:developercommunity.visualstudio.com/idea/947742/...
カイルデラニー

回答:


157

プロジェクトがすべてAnyCpuでない場合は、次の2つの設定が一致していることを確認することもできます。

  1. [テストプロジェクトを右クリック]->プロパティ->ビルド->プラットフォームターゲット-例x64

  2. [メインメニュー]->テスト->テスト設定->デフォルトのプロセッサアーキテクチャ-> X64

これらが一致しない場合、テストプロジェクトは静かに実行できなくなることがわかりました。


5
この答えは「オンとオフをやり直す」という点で首を絞めているので、これで問題が解決する場合は、賛成票を投じてください。
lukkea

これは私の問題を修正しました(混合プラットフォームからanycpuへの切り替え)
Marcel Studer

1
テストプロジェクトがnetstandard2.0ではなくnetcoreapp2.2であることを確認してください
user2033412 '12

4
働いた。私は実際にVSを使用して、明確な警告またはエラーメッセージなどを提供します。
anon

9
VS2019バージョン:メインメニュー->テスト-> AnyCPUプロジェクトのプロセッサアーキテクチャ-> X64。
StackOverthrow

64

VS 2017でも同じ問題が発生しました。私の場合、VSを再起動することで解決しました。


7
この反対票を投じた理由についての以前のコメントは削除されたので、もう少し明確になります。これは問題の解決策ではありません。これは根本的な問題を解決しない非常に一時的な修正です。私は、SOが「オフにしてもう一度オンにする」ように言われるようになるはずの場所だとは思いません。つまり、ここに着く前に学ぶべき知識です。解決策については、Joseph Simpsonの回答を参照してください。
lukkea 2018

5
@lukkea私はジョセフ・シンプソンの回答に従い、すべてのプロジェクトがAnyCpuであることを確認しました。私はまだここで説明されている問題を抱えていました。私にとっては、VSを再起動するだけで役に立ちました。VS2012がこの種の問題を抱えているのはこれが初めてではありません(私のマシンだけではありません)。これは良い解決策ではないとあなたに同意しますが、プロジェクトに問題がない場合は、それが唯一の助けになるかもしれません。ただし、リビルドをクリーニングしても効果がないかどうかを確認する必要があります。
Sascha、

2
「オンにしてからもう一度オフにする」だけですべての問題が解決する場合。それがいくつ修正するかはまだ驚くべきことです。私がスタックオーバーフローに行かなければならなかったのは少し恥ずかしいですが、この答えは役に立ちました。
Richard Garside

2
@lukka時々ビジュアルスタジオが根本的な問題であり、再起動が解決策です
JSON

1
それでも.... VS2019のために働く
Tronald

44

MSTestではなくNUnitを使用している場合は、Visual Studio 2012/2013用のNUnit Test Adapter Extensionが必要です。


9
これは私がいることを私は「NUnitの3テストアダプター」をインストールするために必要なことを理解助け:marketplace.visualstudio.com/...
Westerlund.io

10
VS 2019では、パッケージマネージャーnuget.org/packages/NUnit3TestAdapter
maylon

このページによるとMicrosoft.NET.Test.Sdk、Nuget
BlueRaja-Danny Pflughoeft

VS 2017では、Extension Nunit 3 Test Adapterをインストールし、それが機能しました。
Bob Lokerse

VS 2019では、Extension Nunit 3 Test Adapterもインストールしましたが、うまくいきました。注:Visual Studioも更新する必要がありました。
Bob Lokerse

42

voidではなくTaskを返すように非同期テストメソッドを変更する必要がありました。

テストはアクティブになり、テストエクスプローラーで実行できました。


1
async voidメソッドが完了するのを待つ方法はありません。Async voidは「ファイアアンドフォーゲット」です。それがテストできない理由です。
Ketobomb

これを読んだときに私が行ったフェイスパームは、土地に響き渡った...私の愚かさを指摘してくれてありがとう。それでうまくいきました。賛成
JP Chapleau

「ノードゥー」カテゴリーの下に提出されたが。私はこれがあなたの戻り値の型がタスクでなければならないことは非常に明白であるが(世界では他の単体テストでは何も返さないのでvoid以外のものなので)、もっと投票され、あなたのユニットを修正するうさぎの穴にあなたを送ります実際の構成に問題がない場合の構成のテスト。本当にこれがコンパイラを引き起こしたか、最低でもランタイムエラーがスローされることを願っています。
pat8719

2
@ pat8719、コードアナライザーの良いアイデアのように聞こえます。書くのはそれほど難しくありません。私はxunitの事実を書いただけでasync void Foo()、そのアナライザーは文句を言わなかったが、確かにそれを追加することができた。cc:@bradwilson
benmccallum

22

テストが書かれているフレームワーク(nunit、xunit、VSテストなど)を確認し、正しいテストアダプター/ランナー拡張機能がインストールされていることを確認します。

私にとって欠落していたのはNUnit 3テストアダプターであり、nunit.framework依存関係のバージョンを調べて必要なバージョン番号を確認しました(ソリューションエクスプローラーの依存関係ツリーで.dllを選択し、F4キーを押して[プロパティ]ウィンドウを表示します)。


2
注意事項:私の元のMSTestプロジェクトは参照しましたMicrosoft.VisualStudio.QualityTools.UnitTestFramework(どのバージョンか不明です)。その参照を削除し、最新(v2.1.0)のMSTest.TestAdapter(およびフレームワーク)をインストールすることで、メソッドが実行されない(または見つからない)問題を解決しました
Adam Cox

@AdamCoxはMicrosoft.VisualStudio.TestTools.UnitTesting廃止されましたか?これを使用して、依存しているプロジェクトにいくつかの参照を再度追加した後、上記のように突然実行を停止するいくつかのテストがありました。
ebyrob

@ebyrob、以下のAthanasiosの回答が関連する可能性があります。MSTest。*パッケージにアップグレード/アップグレードするだけでなく、いくつかの依存関係を追加し、いくつかのバインディングリダイレクトを修正する必要があったようです。警告の出力を確認してください。
benmccallum

16

TLDR:テストパッケージを更新し、出力を確認します->テストコンソール

私はこれに1日半苦労しました。だから私はそれを解決するために私がやったことです:

症状

  1. 5ユニットテストプロジェクト、すべてTestExplorerで検出可能
  2. 5つのうち2つは適切に実行されました
  3. 3まったく実行されない
  4. .netフレームワークの更新後に問題が始まった

調査

.netフレームワークの更新中にすべてのパッケージが更新されたため、作業中のプロジェクトと機能していないプロジェクトの違いから始めました。最初の手がかりは、3つのプロジェクトすべてがMSTest.TestAdapterMSTest.TestFrameworkを使用していたことです。

当然、私は-> 出力コンソール -> VS 2019のテストドロップダウンに移動し、出力を確認しました。そこには何も有用ではありません。

ソリューションのステップ1MSTest.TestAdapterMSTest.TestFrameworkをバージョン2.0.0に更新します。

ソリューションのステップ2出力コンソール -> テストドロップダウン出力が次々に表示され始め、パッケージが不足し、バインドリダイレクトが間違っている

ソリューションのステップ3:不足しているパッケージを手動で追加します。私にとってそれらは

  1. System.Runtime.Extentions
  2. System.Reflection
  3. 多分私が行方不明のもの

ソリューションのステップ4:不要なバインディングリダイレクトを削除/修正しました。

これが他の誰かの役に立つことを願っています。


その日あなたは私を救いました!私は4.5 FWバージョンのプロジェクトをアップグレードし、パッケージからすべての不要なものを削除しようとしましたが、この状況になってしまいました。ありがとう!
Numan

私は同じようなことを経験していたと思います。最終的には、プロジェクトをゼロから再作成しました。どうやら* .csprojファイルにはToolsVersion、地雷を設定してぶつけることですべてをめちゃくちゃにする行があります。私が言えることは、MSユニットテストの「バイヤー注意」であり、*。csprojファイルをすぐに置き換える準備ができていることです。
ebyrob

おかげで、直接の問題ではありませんが、コンソール出力を確認するヒントで、テストの実行を妨げているエラー(DBContext Disposeメソッドにエラーがあった)が表示されました。
Iain Carlin


11

VS 2019のクリーンインストール後に同じ問題が発生しました。テストは見つかりましたが、「予期しないエラーが発生しました」で実行されません。デフォルトで選択されていたx86の代わりにx64を設定することで修正されました。

ここに画像の説明を入力してください


4
これは、VSの再起動と.vsフォルダーの削除と共に、私にとっての修正でした。ありがとうございました。
Donald.19年

これがまだ問題であるとは信じられません...うまくいけば、ある時点で、その古典的な障害に関する何らかの警告が出力されたMicrosoftです。
Guillaume LaHaye

10

プロジェクトで、Microsoft.VisualStudio.QualityTools.UnitTestFrameworkアセンブリを参照していないことがわかりました。代わりに、それはMicrosoft.VisualStudio.TestPlatform.TestFrameworkおよびMicrosoft.VisualStudio.TestPlatform.TestFramework.Extensionsを参照していました。これら2つの参照を削除し、Microsoft.VisualStudio.QualityTools.UnitTestFrameworkアセンブリへの参照を追加すると、以前に青い感嘆符でマークされていたテストが突然アクティブになり、機能し始めました。

間違ったアセンブリでユニットテストが実行されない

適切なアセンブリで、テストが実行されます


3
.NET Framework 4.6.2から.NET Framework 4.7.2に切り替えた後、テストが実行されなくなりました。何時間も試した後、このソリューションだけが私にとってうまくいきました。
エリックバージェロン

.NET Framework 4.6.2から.NET Framework 4.7.2に切り替えた後、
app.configの

10

私はこの問題を抱えていました。それは、バージョンが異なる複数のテストプロジェクトが原因で発生しました。

  • MSTest.TestAdapter
  • MSTest.TestFramework

同じようにプロジェクトのnugetパッケージを統合すると、問題が解決しました。


1
この回答は、同様の原因を見つけるのに役立ちました。私の場合、一部のテストプロジェクトにはMicrosoft.VisualStudio.TestPlatform.TestFrameworkへの参照があり(実行されませんでした)、別のテストプロジェクトにはMicrosoft.VisualStudio.QualaityTools.UnitTestFramework(実行されるプロジェクト)への参照がありました。
jr

8

私の場合、それは私のソリューションの1つのテストプロジェクトにMSTest.TestFrameworkおよびMSTest.TestAdapter nugetパッケージがインストールされていたが、他のパッケージにはインストールされていなかったためです。これらのパッケージは、ソリューション内の1つのプロジェクトにインストールされるまで、テストを実行する必要はなかったようです。

この問題は、これらのパッケージがないテストプロジェクトにそれらのパッケージをインストールすることで修正されました。


私の場合、それは正反対です。MSTestnugetパッケージを含むユニットテストプロジェクトは、他のものとは異なり、実行されません。奇妙な。
Palle Due

解決済み:.testsettingsファイルがあります。MSTestパッケージには.runsettingsファイルが必要です。そのため、テストは実行されていません。
Palle Due

7

私のためにそれを修正したのは、MS.Test nugetパッケージをアップグレードすることでした


7

Nunit3TestAdapterNugetをインストールするとこの問題は解決しました


これで私の問題も解決しました!:)
Eru

6

ここに画像の説明を入力してください

テストエクスプローラーでAnyCPUプロジェクトのプロセッサアーキテクチャを設定すると、問題が解決しました!上記のスクリーンショットを参照してください。


どうもありがとうございます!=)
Alexander Brattsev

4

私の場合、私はasync voidメソッドを持っていて、に置き換えたasync Taskので、テストは期待通りに実行されました:

    [TestMethod]
    public async  void SendTest(){}

と置換する :

    [TestMethod]
    public async  Task SendTest(){}

1
これは私の問題でした
カイルデラニー

3

同じ症状がありました。

[ツール]-[拡張機能と更新]から適切なVisual Studio拡張機能がインストールされていることを確認してください。私の場合、オンラインオプションからXUnitとSpecflowをインストールする必要がありました。

次に、ソリューションをクリーンアップして再構築します。

それでも解決しない場合は、一時ディレクトリをクリアします([スタート]メニューの検索で%temp%を検索し、Tempのすべてのコンテンツを削除します)。

そして最後に、Resharperをアンインストールしてみて、問題を解決しました。


4
Resharperをアンインストールしますか?これは解決策だとは思いません^^
Steve Rakebrandt 2017年

2

ここでは、テストプロジェクトがビルドされるようにマークされていませんでした。

ビルド->構成マネージャー...->テストプロジェクトのビルドを確認


2

私はこの種のエラーでここに着いたので、私の問題/解決策を投稿します:

症状:

  • すべてのテストが実行されているわけではありませんが、プロジェクトごとに依存するのではなく、一部のテストのみが実行されました。
  • 実行されたものはすべて緑でした。
  • 技術スタック:dotnet core / XUnit / FluentAssertions
  • すべてのテストが検出され、変更された場合は更新されました。
  • 「実行されなかったテスト」を選択または数回実行することにより、それらを実行できます。

問題:

別のスレッド内で例外をスローするコードにエラーがありました。すべてのテストアサーションはパスしましたが、テストの実行がキャンセルされました。「テスト出力」(NullException)でエラーを確認できました。


+1特定のテストをデバッグしようとしました。最後に別の簡単なテストを実行したところ、特定のテストをデバッグできました。この答えは私にそれを試すようにさせました。
ハルバード

2

同じ症状がありましたが、私の場合、問題となったのはドットネットコアSDKバージョンでした。

プロジェクトは2.2を対象としており、3.0を使用してビルドできました。最新の2.2 SDKバージョンをインストールした後、実行できました。


2

テストパネルのエラー出力を表示するには、[出力]パネル(ビュー->出力)を開き、[出力を表示]ドロップダウンから[テスト]を選択します。

からの出力を表示


さらに、Resharperがインストールされている場合場合は、テストファイルを開き、テストの横にあるテストサークルにと、追加のエラー情報を取得できます

よりシャープな出力

それをクリックすると、より詳細な情報のウィンドウが表示されます。または、拡張機能-> Reshaper-> Windows-> Unit Test Exploration Resultsに移動してそのウィンドウを開くこともできます。

Resharperユニットテストの探索


2

Visual Studio 2019バージョン16.4.6およびMicrosoft.VisualStudio.TestTools.UnitTestingで多くのオプションを試しました が、現時点では、テストを正常に実行する唯一の方法は、コンソールで次のコマンドを呼び出すことでした。

dotnet test

テストはテストエクスプローラーで検出されますが、結果は「実行されません」です。

Visual Studioの更新は役に立ちませんでした。

次のパッケージの最新バージョンへの更新を実行することにより、「指定されたテストケースフィルターFullyQualifiedNameに一致するテストがない」という問題を解決しました。

Microsoft.NET.Test.Sdk
MSTest.TestAdapter
MSTest.TestFramework

1

私にとっての解決策は、Resharperユニットテストの設定「デフォルトのプラットフォームアーキテクチャ」を「x64」に変更することでした。

ここに画像の説明を入力してください


これにより、テストエクスプローラーでのテストの実行を拒否した.NET Core 3.1プロジェクトの問題が解決しました。これ以外には何も修正しません。
J_L

1

私にとってVS2017の再起動は機能しませんでした。slnをクリーンアップして、実行されなかったテストを含むファイルを見つけ、そのファイルのみを実行する必要がありました。その後、私はすべてを実行しましたが、それは再び正常に機能しました。


1

NUnit(3.11.0)とNunitTestAdapter(3.12.0)のnugetパッケージのバージョンが異なっていました。NUnitを3.12.0に更新すると、Visual Studioがテストを実行しました。


1

私の場合、MSTest nugetパッケージを更新するのに役立ちました。空のMSTestプロジェクトでもパッケージの更新が機能していても、この問題を再現できます。


1

私にとって、基本クラスにTestContextというプロパティがあると、この動作が発生していました。例えば:

[TestClass]
public abstract class TestClassBase
{
    protected object TestContext { get; private set; }
}

[TestClass]
public class TestClass : TestClassBase
{
    // This method not found
    [TestMethod]
    public void TestCase() {}
}

1

属性から、MSTestを使用していることがわかります。同様の問題がありました:テストエクスプローラーにテストが表示されましたが、([すべて実行]を選択するか、個別に選択して)テストを実行しようとしても、実行されませんでした。

私の問題は、空の.NET標準クラスライブラリプロジェクトから単体テストプロジェクトを手動で作成したことです。MSTest.TestFrameworkNuGetパッケージをインストールしましたが、パッケージはインストールしていませんMSTest.TestAdapter。アダプターパッケージをインストールするとすぐに、期待どおりに実行されました。

振り返ってみると明らかなようですが、テンプレートから単体テストプロジェクトを作成するときは、これらのことを当然のことと考えます。


1

NUnitテストアダプターファイルがユーザーフォルダーC:\ Users [User] \ AppData \ Local \ Temp \ VisualStudioTestExplorerExtensions \ NUnit3TestAdapter.3.8.0 / build / net35 / NUnit3.TestAdapter.dllでWindows 10およびこれにより、テストエクスプローラーは正常に機能しなくなります。


1

.Net 4.7でVS2019を使用しています。NUnit拡張v3をインストールし、テスト設定をX64を使用するように変更しました。私の単体テストプロジェクトはAny CPUです(x64に変更すれば動作します)。これで、コードをデバッグできます。


1

この問題は、実行中のテストメソッドがStackOverflowExceptionをスローして、テストランナーにテスト実行を中止させ、結果として0 tests run

問題の原因を見つけて解決するには、TestInitializeTestMethodの両方の装飾されたメソッドの先頭にブレークポイントを置き、ユニットテストをデバッグモードで実行し、例外がスローされるまでステップオーバー(F10)します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.