次のようなxUnit.netテストがあります。
static class MyTestClass
{
[Fact]
static void MyTestMethod()
{
}
}
VS 2012のxUnitプラグインには次のように書かれています。
実行するテストが見つかりませんでした。
TestDriven.netはそれを正常に実行します ただし、アドホックについて何か言及しています :
1合格、0失敗、0スキップ(「タスクリスト」を参照)、0.47秒かかりました(アドホック)
TeamCity、xunit.gui.exe
およびxunit.console.exe
およびVisual StudioもTestMethod
を見つけることができません
(私が持っている xunit.runner.visualstudio
がインストールされ、VSはいくつかのテストを見ています。
何が得られますか?
TL; DRテストクラスmust be public
(ただし、テストメソッドはprivate
および/またはstatic
)
効率上の理由から、xUnitの作成者は、ランナーでテストクラスを検索するときにBindingFlags.NonPublic
を使用しないことを選択しました(MSILメタデータテーブルはprivate
(/ internal
)にインデックスを付けません)クラスは同程度であるため、Reflectionが達成できる相対的な効率には大きなパフォーマンスの違いがあります)。
上記の結果として、class
がprivate
であるという事実は、ピックアップされないことを意味します。
テストメソッドがprivate
およびstatic
であるという事実は問題ありません-1.0はこれらの両方の側面をサポートしているため、xUnitは設計上です。
Visual Studio xUnit Runner拡張機能、xunit.console.exe
(およびGUI)、xunit
MSBuildタスク、ResharperおよびCodeRushはすべて、これを尊重することに一貫性があることに注意してください(ただし、おそらく[特に後の2つ]テストクラス(つまり、[潜在的に間接的に] Fact
派生アノテーションを含むクラス)がprivate
である場合にフラグを立てる。
TestDriven.netがテストを実行する理由は、TestDriven.netの作成者がそれをJust Workにするために多大な努力を払ったからです。内部で特別なテストランナーラッパー/シム(アドホックランナーと呼ばれる)を使用してテストを実行します。メソッドは実際にはxUnit.netランナーを介して実行されていないため、テストに設定した副作用のある属性はトリガーされないことに注意してください。
特に、NUnit(およびMSTestと確信しています)doはプライベートリフレクションを使用します[したがって、private
クラスでテストを選択します]なぜあなたが以前心配することは決して重要ではなかったのでしょうか。
注:これによって可能になる副作用/トリックは、テストクラス[およびネストされたクラス]のすべてのテストをprivate
pingする簡単な方法として、テストクラスSkip
を作成できることです。 (残念ながら、この惑星で使用されているこのケースは、意図せずに意図的に使用されているケースをはるかに上回っています!)
この回答はVS 2013向けですが、手順はVS 2012向けと基本的に同じです。これは、 ReSharperの単体テスト機能 を介して実行する場合に適用されます。
Visual Studio 2013のxUnit.netランナーをインストールします(Visual Studioを管理者として実行する場合は注意してください。または、IDEを非管理者として実行するとテストが実行されない場合があります):
a。 Visual Studio 2013内から、[ツール]-> [拡張機能と更新プログラム]-> [オンライン]に移動します。
b。 Visual Studio 2012および2013のxUnit.netランナーを検索
c。次に、ダウンロード(インストール)します。 VS 2012からVS 2013にアップグレードする場合は、これをアンインストールしてから再インストールすることをお勧めします。
d。 Visual Studioを再起動します。
ReSharperがインストールされている場合、xUnit.netテストランナープラグインをインストールします。
a。 Visual Studio 2013で、ナビゲート:Resharper-> Extension Manager。
b。左側で[オンライン]を選択します。
c。 「xunit.net」を検索します。 「xUnit.net Test Support」を選択します。インストールをクリックします。
d。 Visual Studio 2013を再起動します。
ソリューションを「きれいにする」
a。 IDEのソリューションエクスプローラーで、ソリューションを右クリックし、[クリーン]を選択します。
b。再コンパイルします。
c。ここで、_[Fact]
_属性を右クリックして、Resharperの[ユニットテストの実行]を選択します(デフォルトの[テストの実行]ではありません)
XUnitで実行中のトラブルシューティング:
XUnitを使用した[Fact]テストの実行に問題がある場合は、次のフォルダーのいずれかまたはすべてからxUnitパッケージを手動で削除する必要がある場合があります(xunit DLLのコンテンツを確認し、見つかった場合はxUnitフォルダーを削除します):
C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\Extensions\
_C:\Users\<username>\AppData\Local\Microsoft\VisualStudio\12.0\Extensions\
_
ReSharperに関しては、xunitcontribライブラリ(xUnit.netテストサポート)のアンインストールと再インストールを試してください。アンインストール時に、いくつかのエラーメッセージが過去に点滅することに気づきました。私はある時点でスクリーンショットをつかみました、そしてそれはリストしました:
C:\Users\<username>\AppData\Local\JetBrains\ReSharper\vAny\packages\xunitcontrib.1.3.0\ReSharper\v8.1\plugins\xunit.dll
_へのアクセスは拒否されます。これを解決するには、Visual Studioからアンインストールした後に_C:\Users\<username>\AppData\Local\JetBrains\ReSharper\vAny\packages\xunitcontrib.1.3.0\
_ディレクトリを削除し、非管理者としてVisual Studioを実行し、ReSharper(Resharper-> Extension Manager)で再インストールします。
http://xunit.github.io/docs/getting-started-desktop.html#run-tests-visualstudio から:
テストの検出または実行に問題がある場合は、Visual Studio内の破損したランナーキャッシュの犠牲者である可能性があります。このキャッシュをクリアするには、Visual Studioのすべてのインスタンスをシャットダウンしてから、フォルダー%TEMP%\ VisualStudioTestExplorerExtensionsを削除します。また、プロジェクトがVisual StudioランナーNuGetパッケージ(xunit.runner.visualstudio)の単一バージョンに対してのみリンクされていることを確認してください。
VS2017 RC、.NET core 1.1プロジェクトでも同じ問題がありました。 xunit.runnerの更新はうまくいきましたが、
Install-Package xunit.runner.visualstudio
(他の回答のコメントで@Kyleが言及したとおり)同じNo tests found to run
メッセージは、NuGetを使用してxUnit.dllを取得し、バージョン2.0.0(v1テストの発見などのコア機能がまだそのブランチに実装されていないため、現在プレリリースとしてマークされています)で終了します。
この場合の解決策は、NuGetパッケージマネージャーでStable Onlyバージョン(Include Prereleaseとは対照的に)を選択することです。
私にとって、テストクラスとテストメソッド名の組み合わせが長すぎました。 xUnitは、この組み合わせに何らかの上限があるようです。
justの名前を短くすると、テストメソッドにより、xUnitはその単一のテストを検出できました。 class全体の名前を短くすると、xUnitはクラス内のすべてのテストを検出できました。
クラス名+メソッド名のしきい値は172文字のようです。
私の場合、テストを表示するには、次の手順を完了する必要がありました。
(すべてNuGet Package Managerを介してインストールされます)
xUnit
v2.0.50727をインストールしますxUnit.extensions
v2.0.50727Visual Studio 2013 Premiumを使用しています。 (Resharperはインストールされていません)
テストクラスまたはテストメソッドが発見されていないところで、私はしばらくの間.NET Coreでこの問題を抱えていました。次の修正プログラムは私のために動作します:
次のコマンドを実行してプロジェクトをビルドします。
dotnet build
注:Visual Studio.NETからのビルドは機能しません! <<<<<<<<<<< 重要!