web-dev-qa-db-ja.com

Visual Studioで単体テストを実行する際のエラー:テストケースオブジェクトがありません

Resharperを使用してVisual Studioからユニットテストを実行すると、次のエラーが表示されます。

Test-case objects missing for the following elements: ... Rebuild the project and try again

単体テストメソッドの横にあるツールチップには、Inconclusive: Test not runと表示され、ある時点でUnit test skippedと表示されたと思います。 Resharperは灰色の目のアイコンを表示します。

また、Visual Studioのテストエクスプローラーには奇妙な問題があります。すべての単体テストが表示されるわけではありません。実際、ユニットテストの200以上が欠落しています。テストエクスプローラーウィンドウには表示されません。いくつかのテストがあり、それらは正常に実行されます。

私がすでに試したこと:マシンのリブート、クリーン、リビルド、同じ.netフレームワーク4.7を使用するためのすべての依存プロジェクトの変更。

VS 2017 .net Framework 4.7、Resharper、およびMSTestを使用しています。すべてが最新のアップデートとバージョンを備えています。

38
goku_da_master

.netバージョンを変更したため、すべてのnugetパッケージを削除した後にこのエラーが発生し、コンパイルするためにそれらのいずれも必要としませんでした。

MSTest.TestAdapter nugetパッケージを再インストールした後、ReSharperはユニットテストを期待どおりに再度実行し始めました。

Install-Package MSTest.TestAdapter

32
workabyte

私はこれがOPの質問に答えないことを知っています。なぜなら彼/彼女はそれを試したからです。

私にとっては、Visual Studioを簡単に再起動することで、次の要素のTest-caseオブジェクトが見つかりませんでした:...プロジェクトを再構築し、再試行してください問題。

17
gabrielkerekes

1日頭を叩いた後、テストエクスプローラーが動作するようになりました。これはターゲットプラットフォームでした。

ユニットテストプロジェクトのプロパティの[ビルド]で、プラットフォームターゲットをx64にしました。それをAnyCPUに切り替え、テストエクスプローラーはすぐに不足している単体テストを取得しました。ただし、resharperでも同じエラーが表示されます。解決策が見つかったら更新します。それまでは、少なくともユニットテストを実行してデバッグすることができます。

3
goku_da_master

FLEE のNugetパッケージをインストールしたため、これが発生しました。これにより、次の行がテストプロジェクトのapp.configファイルに挿入されました。

<dependentAssembly>
  <assemblyIdentity name="System.Reflection" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
  <bindingRedirect oldVersion="0.0.0.0-4.1.2.0" newVersion="4.1.2.0" />
</dependentAssembly>

私のマシンにはバージョン4.1.2.0がインストールされていないので(4.0.0.0があります)、テストプロジェクトはこの非常に混乱した「エラーメッセージ」で失敗します。

以前のバージョン(1.05)のFLEEパッケージ(4.0.0.0を使用)をインストールし、app.configのbindingRedirectでバージョン番号を4.0.0.0に変更すると、すべて正常になりました

2
Daniël Tulp

私の問題は、間違ったビルド構成を使用していたことです。

私のソリューションにはかなりの数のプロジェクトとかなり多くの異なるビルド構成があり、使用しようとしていたテストプロジェクトを含めるために適切にセットアップされていない間違ったプロジェクト構成を誤って選択していました。

1
Richard Moore

MSTest.TestAdapterを1.1.18から1.3.2にアップグレードしました。ついに解決しました。

1
ekenman

F#プロジェクトを使用しているときにこれに遭遇しました。私の場合、問題を引き起こしたのはテストメソッド名に括弧が含まれていたためです。

[<TestMethod>]
member x.``E is updated where generic form or visit should include (this) UPDATED VISIT AND FORM``() =
        let origExpr = "visit:form:INTQ1AB"
        let checkedExpr = "VISIT2:FormFour:INTQ1AB"
        ...

以下のように「(this)」の周りの括弧を削除するのに対し、決定的でないテストになりました

[<TestMethod>]
member x.``E is updated where generic form or visit should include this UPDATED VISIT AND FORM``() =
        let origExpr = "visit:form:INTQ1AB"
        let checkedExpr = "VISIT2:FormFour:INTQ1AB"
        ...

テストが正常に完了できるようにしました。

1
pilsdumps

ResharperにNuGetを介してNunitの欠落している参照を検索させると、この問題に遭遇しました。必要な.NETコア互換バージョンのパッケージをダウンロードする代わりに、.NETフレームワークバージョンを取得していました。これを解決するために、NUnitパッケージをアンインストールし、NuGetパッケージマネージャーを使用して再インストールしました。

0
drobison