内蔵のMicrosoft.VisualStudio.TestTools.UnitTesting
を使用するテストがいくつかありますが、実行することはできません。
私はビジュアルスタジオ2012 ultimateを使っています。
2つのプロジェクトの解決策があります。クラスの前にusing Microsoft.VisualStudio.TestTools.UnitTesting
、[TestClass]
、テストメソッドの前に[TestMethod]
と参照Microsoft.VisualStudio.QualityTools.UnitTestFramework
(バージョン10.0.0.0、ランタイムバージョンv2.0.50727)があります。私はドットネットフレームワーク3.5、4、4.5を試してみましたが、他の人は再ターゲットエラーを出します。
私はソリューションとプロジェクトを構築しようとしました。テストエクスプローラには、 `利用可能なすべてのテストを発見するためのソリューションを構築します。ソリューション内のすべてのテストを作成、検出、および実行するには、[すべて実行]をクリックします。
だから質問は:テストを見つけるためにどのようにビジュアルスタジオを入手するのですか?
また、これに従ってみました: http://msdn.Microsoft.com/en-US/library/ms379625%28v=VS.80%29.aspx しかし成功しないで:私は立ち往生右クリックしてcreate tests
を選択するように求められたら、セクションのはじめにcreate tests
はありません。
私はこのテストをしています(コンパイルはしていますが、テストエクスプローラには表示されません)。
using Microsoft.VisualStudio.TestTools.UnitTesting;
namespace tests {
[TestClass]
public class SimpleTest {
[TestMethod]
public void Test() {
Assert.AreEqual("a","a", "same");
}
}
}
私は今、それが共有ドライブ上にあるからだということを発見しました(以下の削除された答えを見てください)、しかし私はまだそれを回避する方法を知りません。 (多分セキュリティ設定についての何か)。
問題は、テストランナーがリモートドライブからテストを実行しないように設定されていることでした。プロジェクトをローカルドライブにコピーしたときはうまくいきましたが、共有ドライブでそれを必要としました(その理由を思い出せません)。
私はそれが共有ドライブから動作するように設定することができると読んだが、私がDebianでMonoDevelopに切り替えたソリューションを発見した時までにそれをすることができなかった。
症状は同じですが、状況が異なります。
私はPeter Lambergのソリューションにもう1つステップを追加しなければなりませんでした - あなたのソリューション/プロジェクトをきれいにしてください。
私のunittestプロジェクトはx64をターゲットにしています。私がプロジェクトを作成したとき、それはもともとx86をターゲットにしていました。
X64に切り替えた後、私のユニットテストはすべて消えました。
テストメニュー - >テスト設定 - デフォルトプロセッサアーキテクチャ - > x64に行きました。
彼らはまだ現れなかった。
ビルドしました。
まだ表示されませんでした。
最後にクリーンをしました
それから彼らは現れた。
設定が変更されたときにソリューションをボールにするには、Clean SolutionとCleanが非常に便利であると思います。時々私は極端に行き、obj
とbin
ディレクトリを削除して再構築しなければならないことがあります。
クラス定義にキーワードpublicを追加してください。あなたのテストクラスは現在それ自身のアセンブリの外には見えません。
namespace tests {
[TestClass]
public class SimpleTest {
[TestMethod]
public void Test() {
Assert.AreEqual("a","a", "same");
}
}
}
これは時々うまくいきます。
[テスト]メニューの下のプロセッサアーキテクチャが、ソリューションの構築に使用したものと一致していることを確認します。
「テスト」 - >「テスト設定」 - >「デフォルトのプロセッサアーキテクチャ」 - >「x86/x64」
他の記事で述べたように、必ずTest Explorerウィンドウを開いてください。テスト - >ウィンドウ - >テストエクスプローラー
それから、プロジェクトをテストで再ビルドすると、テストがTest Explorerに表示されます。
編集:Ourjamieが以下で指摘したように、クリーンビルドをすることも助けになるかもしれません。それに加えて、ここで私が遭遇したもう一つのことがあります:
ソリューションの下に作成した新しいテストプロジェクトのために、Configuration Managerの[ビルド]チェックボックスがオフになっています。
[ビルド] - > [構成マネージャ]に移動します。テストプロジェクトで、すべてのソリューション構成およびソリューションプラットフォームに対してビルドチェックボックスがオンになっていることを確認してください。
私はVisual Studio 2012を持っています、そして私はテストエクスプローラーでテストを見ることができませんでした、
だから私は以下をインストールしました。 NUnit Test Adapter
これで問題は解決しました。
私の最近の経験では、上記のすべてがうまくいきませんでした。私の試験方法
public async void ListCaseReplace() { ... }
表示されていませんでしたが、正常にコンパイルされていました。 async
キーワードを削除すると、テストエクスプローラにテストが表示されました。これはasync void
が「忘れ去り」の方法であることが理由です。メソッドをasync Task
にすると、テストが再開されます。
さらに、テストプロジェクトの設定を「ビルド」に設定しないと、テストが表示されなくなります。 Configuration Manager>ビルドするテストを確認してください。
元のポスターが示しているように、プロジェクトは共有ドライブ上にあるので。 VS.NETは、テストアセンブリをロードして実行する前に、ネットワークの場所を信頼する必要があります。 このブログ記事を読んでください 。
VS.NETがネットワーク共有のものをロードできるようにするには、それら(信頼)を信頼できる場所に追加する必要があります。完全な信頼リストの実行に場所を追加するには(明らかにあなたの環境に応じて修正します):
caspol -m -ag 1.2 -url file:///H:/* FullTrust
既存の信頼できる場所を確認または一覧表示するには、次のコマンドを実行します。
caspol -lg
私が発見した問題は、ソリューションがネットワークドライブ/ネットワークロケーション/共有ドライブから実行されている場合、テストがテストエクスプローラで見つからない(何も表示されない)ことです
環境変数を追加することでこれを修正できます。
COMPLUS_LoadFromRemoteSourcesとその値を1に設定
一般的なテスト問題を解決するためのクイックチェックリスト。次のことを確認してください。
public
です[TestClass]
属性を持っています[TestMethod]
属性を持っていますこれで解決しない場合は、クリーニング、ソリューションの再構築、およびVisual Studioの再起動を試してください。
エラーが発生しました:"Failed to initialize client proxy: could not connect to vstest.discoveryengine.exe."
管理者としてVisual Studioを実行しようとします。それは私のために働いた。
このエラーについて議論するもう1つのStack Overflowの記事があります 、そして同じ解決策がそれらのために働きます。なぜこれが機能するのか、疑問は残ります。
私は同じ問題を抱えていました..私の場合、それは私有財産TestContext
が原因でした。
これを次のように変更すると役に立ちました。
public TestContext TestContext
{
get;
set;
}
(@Ourjamieの回答で説明されているように)ソリューションをクリーニングして構築した後、影響を受けたテストクラスのテストメソッドはテストエクスプローラで利用可能でした。
ネットワーク共有上でソリューションを開こうとしたとき、私は同じ問題に遭遇しました。この場合、Test Explorerによって単体テストは検出されません。解決策は次のようになります。
[コントロールパネル] - > [インターネットオプション] - > [セキュリティ]タブ - > [イントラネット]をクリックし、ネットワーク共有を保持しているサーバのIPアドレスまたはホスト名を[サイト]リストに追加します。
これを行った後、私は解決策を再コンパイルし、そして今テストが現れました。これは@BigTの答えとよく似ているはずです。
私は時々同じ症状が出ます。
私がしたことは、
1。テストエクスプローラウィンドウを閉じた
2。解決策をきれいにした
3。ソリューションを再構築する
4。 Test - > Windows - > Test ExplorerからTest Explorerウィンドウを再起動しました。
そして私はテストエクスプローラウィンドウでテストを受けました。
私の場合はそれ以外のものでした。パッケージをインストールしてからアンインストールし、以前のバージョンを再インストールしました。それは私のapp.configにリダイレクトする残りのconfiguration/runtime/asssemblyBinding/dependencyIdentity
を残しました。私はそれを修正しなければなりませんでした。私はOutput
ウィンドウを見てドロップダウンで "Tests
"を選択することによってそれを考え出しました。エラーメッセージがありました。これは苦痛でした...それが他の誰かに役立つことを願っています。
別のPCでソリューションを構築しようとしたときに、この問題が何度も発生していました。
私はNUnitとSpecflowも使っています。私のテストプロジェクトはデフォルトでX86をターゲットにしていますが、これをX64に変更する必要があります。手順は1.テストメニュー - >テスト設定 - デフォルトのプロセッサアーキテクチャ - > x64です。 2.クリーンビルド3.ビルド4.それでもテストが表示されない場合。 5.ツール拡張機能とアップデートを選択し、NUnitとSpecflowのライブラリをインストールします。6.クリーンビルド7.ビルド
それから通常テストはテストエディタに現れます。
上部のメニューバーから...
テスト - >実行 - >すべてのテスト
Test Explorerからすべてのテストを表示することもできます(Test - > Windows - > Test Explorer)。
さらにVS 2012では、何かを見逃した場合は、右上のクイック起動バーを使用して検索してみてください(Ctrl + Q) "テスト"
お役に立てれば。
これは、OPの質問に答えるのではなく、ここで終わる人々を助けるためのものです。
Visual Studioをいったん閉じてからもう一度開いてみてください。
これが誰かに役立つことを願っています。
私はこの問題を解決する最善の方法は、.proj msbuildファイルを作成し、このファイルにあなたが問題を抱えているあなたのユニットテストプロジェクトを追加し、mstestのコマンドラインバージョンを使用してテストを実行することです。私はapp.configにmstestからテストを実行した時にのみ現れる小さな設定問題を発見しました - そうでなければテストプロジェクトはうまく構築されました。また、この方法に関する間接的な参照の問題もあります。 mstestを使用してコマンドラインから単体テストを実行できるようになると、その後、クリーンな解決策を実行し、解決策を再構築することができ、テストは正しく検出されるはずです。
私はこれがより古い質問であることを知っていますが、Visual Studio 2015では私が新しく作成したテストクラスが認識されていないという問題を抱えていました。すべて試してみました。問題になったのは、そのクラスが「プロジェクトに含まれていなかった」ということでした。私はこれをVisual Studioを再起動して私のテストクラスがそこにないことに気づいたときにだけ見つけました。隠しファイルを表示すると、それを見ただけでなく、私が書いた他のクラスも含まれませんでした。それが役立つことを願っています
[Copy Local]が[False]に設定されている可能性があるアセンブリがないか、参照アセンブリを確認してください。
テストプロジェクトがそれ自身のフォルダ(たとえばbin/Debug)にビルドされていて、プロジェクトが別のアセンブリに依存していて、参照リストのアセンブリの1つがCopy Local = "False"とマークされている場合テストはビルド後にロードされません。
私は同じ問題を抱えていたが、少し違った。
私はビジュアルスタジオ2012を使用していました。何らかの理由で、最初に生成されたファイルのテストだけが実行されていました。しかし、別のファイルのテストは実行されていませんでした。ここに掲載されているさまざまな解決策を試してみましたが、うまくいきませんでした。
最後に、クラス内の最初のメソッドであるテストクラスにプライベートメソッドがあることを知りました。私はプライベートメソッドを移動しましたafterテストメソッド。そのため、[TestMethod]
属性を持つメソッドは、クラス内の最初メソッドです。奇妙な、しかし今ではうまくいきます。
いつか誰かに役立つことを願っています。
NUnit Framework 2.6.4はNUnit Test Adapterではうまく機能しないようです。 Webサイトでは、テストアダプタはNUnitフレームワーク2.6.3でのみ動作すると言及しています。
これが私の問題でした。1. VS2012のNugetからNUnitとNUnit Test Adapterを別々にダウンロードしました。どういうわけかNUnitが2.6.4にアップデートされました突然、テストケースがリストに表示されませんでした。
修正:
Nuget and Nuget Testアダプタをアンインストールします。
a。 「ツール」>「Nuget」>「Nuget Pkgマネージャー」>「ソリューション用のNuget Pkgの管理」に移動します。
b。インストール済みパッケージを一覧表示する
c。クリック管理
d。プロジェクトのチェックを外します
NUnit 2.6.3 Frameworkを含むNUnit Test Adapterをインストールします。
クリーン/再構築ソリューション
テスト>テストエクスプローラ>すべて実行
すべてのテストケースを見る
お役に立てれば
テストは非同期メソッドを好みません。例えば:
[TestMethod]
public async void TestMethod1()
{
TestLib oLib = new TestLib();
var bTest = await oLib.Authenticate();
}
これをした後:
[TestMethod]
public void TestAuth()
{
TestMethod1();
}
public async void TestMethod1()
{
TestLib oLib = new TestLib();
var bTest = await oLib.Authenticate();
}
それはテストを見ました。
VS2013 Ultimateでネットワーク共有上のソリューションを開こうとしているときに私は同じ問題にぶつかりました。
電源を入れて問題を解決しました
[コントロールパネル] - > [インターネットオプション] - > [セキュリティ]タブ - > [ローカルイントラネット]をクリックし、サイトをクリックして、[イントラネットネットワークを自動的に検出する]がチェックされていることを確認します。
この問題は、Microsoft Visual Studio 2012 Express for WebからMicrosoft Visual Studio 2013にアップグレードするときに発生しました。
私は2012年に単体テストプロジェクトを作成しましたが、2013年にオープンした後、単体テストプロジェクトはテストエクスプローラにテストを表示しませんでした。テストを実行またはデバッグしようとするたびに失敗し、出力ウィンドウに次のように表示されました。
Failed to initialize client proxy:
could not connect to vstest.discoveryengine.x86.exe
また、テストのデバッグ時に、Visual Studio 2012のインスタンスが起動されていたことにも気付きました。これにより、Unit Testsプロジェクトがまだ2012を参照していることがわかりました。このバージョンのVisual Studio用のスタジオユニットテストフレームワークDLL:
C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\PublicAssemblies\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll
バージョン番号を11.0から12.0に変更しました。
C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\PublicAssemblies\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll
私はすべてを再構築し、これにより問題が修正されました - すべてのテストはテストエクスプローラで見つかりました、そして今すべてのテストは見つけられて、完全に動作しています。
これらはすべて素晴らしい答えですが、私が知っているもう1つの理由があります。私はそれに遭遇しました。私のテストの1つでは、未使用のプライベートクラスがあることを示すReSharperメッセージがありました。それは私が今後のテストで使用するつもりのクラスでした。これは実際にall私のテストの全てを消滅させました。
あなたのテストプロジェクトがあなたのプロジェクトプロパティでnotdelay sign onlyに設定されているか確認してください - > Signingそうであれば、それを選択解除し、クリーンな再構築を行います。
ここでの解決策のどれも私を助けませんでした。同じプロジェクトを参照する別のソリューションがうまく機能したのに対し、テストは1つのソリューションでは検出されません。 私はついにsolutionname.v12.suoファイルを削除することによってこれを解決しました。
VS 2012を最新のアップデートに更新しました。すなわちビジュアルスタジオアップデート3。それは私のための問題を修正しました。
私にとって解決策はほんの少し複雑ではありませんでした。
私は自分のマシンに既存のソリューションを持ってきたところで(gitHubから複製された)、Visual Studioが作成した自動生成された.csファイルを追跡しません。 (各機能ファイルには、同じ名前の.csファイルがあります)
関連付けられた.csファイルを使用せずにソリューションを開くと、実際にはバインドされたメソッドに移動できます。そのため、specflowは正しく配線されているように見えましたが、テストエクスプローラーでテスト名を表示できませんでした。
この問題では、単に機能ファイルをプロジェクトから除外してから再度インクルードすると、VSはこれらの自動生成コードビハインドファイルを再生成する必要がありました。
その後、テストエクスプローラーでテストを見ることができました。
これに私の答えを追加するのは、これに対するGoogleのトップ結果です。
私はVisual Studio 2015を使用していて、(無意識のうちにInstall-Package NUnit
を実行しました)NUnit3パッケージNuGetをテストプロジェクトにインストールしました。私はすでにNUnitテストアダプタ拡張をインストールしていました、そして、私のテストはまだ現れていませんでした。
Tools> Extensions and Updatesを使ってNUnit3テストアダプタをインストールすることでこれが解決しました。
ユーザーのエラーや愚かさに基づいてリストに追加する別のものがあります。私はこの質問からさまざまな答えを試してみたところ、自分のテストプロジェクトはConfiguration Manager([Build]メニュー構築された>。<
これを投稿することで、私がしたように1、2時間を無駄にしないようにすることができます。
テストが発見されることを妨げるかもしれないもう一つの問題、通常は以下のようなテスト出力ウィンドウのメッセージで。
次の例外が発生したため、runsettingsプラグイン 'VSTest Run Configuration'の設定を構成できませんでした: 'EntityNameの解析中にエラーが発生しました。 1行目、8桁目。 プラグインの作成者に連絡してください。
これは、パスまたはファイル名にエスケープする必要がある文字がxmlとして含まれていることが原因である可能性があります。特に&文字は、<および>がディレクトリ名またはファイル名には使用できないためです。これはテストディスカバリーを失敗させ、テストを識別させません、しかし私はまだ余白をクリックすることによってResharperを使用して手動でテストを実行することができました。
"Any CPU"プラットフォーム構成をターゲットにしたテストプロジェクトを使用して、Windows 7 SP1 x 64上のVisual Studio 2013 Update 4で同じ問題が発生していました。
問題は、テストプロジェクトが実際には "テスト"という名前で、プロジェクトが(再)ビルドされた2回目に消えることです。
たとえば、プロジェクトの名前を "MyProject.Tests"に変更した後、テストが消えることはなくなりました。
私は上記すべてを試しましたが、それでも私のVisual Studio 2012はテストを表示しませんでした。結局、私はテストクラスに行き、それがRootNamespace.FolderNameを持っていることに気付きました、そして私はルート名前空間にクラスを置くために.FolderNameを取り除きました、そしてすべてのテストが戻ってきたビンゴ!
先日まで元の名前空間で問題なく動作していた理由が理解できません。
Visual Studio Professional 2012、アップデート4はこちら。テストクラスと同じプロジェクト内にInterop関数定義(DllImport/extern)があると、Test Explorerが混乱します。 Interopを別のプロジェクトに移動して問題を解決しました。
Visual Studio 2015(v.14 .....) - ここでも同じ問題
原因:NUnitとNUnitテストアダプターのバージョンが異なる私の場合、NUnit(3.5)とNUnitテストアダプターの両方の最新バージョンがありましたが、テストアダプターが正しくありませんでした。 NUnit 3以降の場合は、NUnit3TestAdapterを使用する必要があります。
解決策: "不良な" NUnintテストアダプタをアンインストールし、UNit3TestAdapter v.3.5.0をインストールしました(最新は現在3.6.0ですが、NUnitと同じものを保つために使用していません)
ソリューションの再構築後、テストがポップアップされました:)
最も簡単な方法は、それらのファイルをファイルエクスプローラからテストプロジェクトにドラッグアンドドロップするだけです。もう一度プロジェクトをビルドしてください。
OR
テストプロジェクトの.csproj
ファイルをテキストエディタで開き、コンパイルするファイル名を手動で含めます。ファイル内でCompile
タグを検索し、実行したいファイルを追加します。
<ItemGroup>
<Compile Include="TestSettings.cs" />
<Compile Include="TestLibrary.cs" />
<Compile Include="UnitTest1.cs" />
</ItemGroup>
ファイルにCompileタグを追加して保存します。今すぐテストを実行します。単体テストを含むファイルが検出され、実行されます。
これらの答えはどれも私が遭遇した原因を扱っていないので、この問題のために、私もここに私の答えを追加します。
私の場合は、コピーペーストのコードの問題でした。 TestProjectA
という独自のテストプロジェクト - TestProjectB
に引き出す特定の種類のテストがあります。 TestProjectA
内のテストは問題なく表示されますが、新しいTestProjectB
内のテストはVS Test Explorerには表示されません - TestProjectB
を特別に構築するか手動で右クリックしてテストを実行しない限り。
原因は、コードをコピーしてコピーした際に、一部のネームスペースが更新されなかったためです。
TestProjectA.ModuleA
を持つネームスペース\TestProjectA\TestClassA.cs
のTestClassA
にTestMethodA()
がありますTestProjectA.ModuleA
を持つネームスペース\TestProjectB\TestClassB.cs
内のTestClassB
内のTestMethodA()
そのため、Visual Studioは、これら2つのTestIdが同じであるというメッセージを[出力]ウィンドウに出力し、2つのプロジェクト間でTestIdが衝突したため、Test ExplorerにTestProjectA
ではなくTestProjectB
を表示します。 TestProjectB.ModuleB
のネームスペースを\TestProjectB\TestClassB.cs
に修正することで問題は解決しました。
この問題は非常に多くの異なった解決策が同様に私自身のものを加えるかもしれないように思われる:
Visual Studioを閉じる
C:\ Users\username\AppData\Local\Microsoft\VisualStudio\12.0\ComponentModelCacheをComponentModelCache.oldに変更します。
Visual Studioを実行すると、コンポーネントキャッシュが再構築されます。
これは私にちょっとだけ。プロジェクトにテストを追加しましたが、Test Explorerに表示されませんでした。私の古いテストはすべて現れました。最後に、私は自分が特定のプレイリストを見ているだけで、プレイリストに新しいテストを追加していないことに気付きました。プレイリストを使用している場合は、[すべてのテスト]を選択し、VSがテストを見つけてテストエクスプローラに表示するかどうかを確認します。その後、それらを目的のプレイリストに追加することもできます。
私たちはxunitを使っていて解決策が私のために働いていたし、チームはフォルダ%TEMP%\ VisualStudioTestExplorerExtensionsを削除していました
このスレッドを読んでください。
なぜVisual Studio 2015/2017 Test Runnerが私のxUnit v2テストを発見しないのですか?
すべての既存の回答を読みましたが、私の(xUnit)テストは発見されていないことがわかりました。未使用の参照、具体的にはxunit.execution.desktop
を削除したためです。 xUnitパッケージを再インストールすることで私の場合の問題は解決しました。
私の場合は、Visual Studio 2017で作成した3つのテストプロジェクトがありましたが(それは問題ではないと思います)、そのうちの2つだけがTest Explorerによって検出されました。私は3番目のプロジェクトがMicrosoft.VisualStudio.QualityTools.UnitTestFramework
dllの異なるバージョンを持っていることに気付きました。 NuGet Managerで更新したところ、テストが表示されました。
VS2013 Ultimateでも同じ問題が発生しました。私の問題は、私がWindowsサービスを作成していてそれをアンインストールするのを忘れていたということでした。そのため、サービスは実行されており、VSはDLLの1つにアクセスできず、テストスイート全体がまったくロードされませんでした。
私が繰り返し遭遇した問題の1つは、Windows 8以降でVisual Studioを(明示的に)管理者として実行していないことです。リストされたいくつかの提案を試してみましたが、管理者としてVS 2013を実行するまでユニットテストが表示されませんでした(ソリューションファイルを開くかショートカットをクリックしてもショートカットが開かない管理者として実際に開くことはできません)。
入力文字列パラメータを含むメソッド宣言をコピー&ペーストしました。入力パラメータを削除するのを忘れました。
public void ExtractValueFromLineTest(string input) {}//test not discovered because of the string input param