8

Resharper Unit Test Runnerを使用してユニットテストを実行またはデバッグすると、「ユニットテストランナーが失敗しましたテストを実行する - 要求された種類の一つ以上を読み込むことができません」の詳細については、LoaderExceptionsプロパティを取得します。Resharper Unit Test Runnerの診断方法「要求されたタイプの1つ以上を読み込めません」エラー

enter image description here

今、私が試したことは、手動でフォルダを、視覚的なスタジオを再起動すると、ハードウェアを削除、クリーン、再構築します再起動し、出力/デバッグウィンドウを見て、夜間にR# "internal"モードを有効にしてログを見ることができます(理解したように%Temp%\ JetLogsに書き込まれます)。すべての手がかりを黙っている。私はR#を "デバッグ"しようとしましたが、デバッガが例外に遭遇する前にダイアログが再びポップアップします。

どうすればこの問題を解決できますか?それは非常に迷惑です!

私が使用している:

  • R#2016年1月2日
  • NUnitの3.2.1
  • のVisual Studio 2015のアップデート2(14.0.25123)
+0

NUnitのは、キャッチとして – Schneider

+0

ReSharperのは、チャンスを得ることはありません...このエラーはNUnitのから直接来ているようですが、私はR#が、私はこれを診断するために何もしないことを驚いています失敗したテスト結果(実際の問​​題であるすべての詳細なし)の例外とモーフ – Monoman

答えて

15

を私が診断してしまいましたこれは非常に簡単な方法です:

ユニットテストアセンブリをクラスライブラリからコンソールアプリケーションに変換し、メインエントリポイント(下記参照)。その中で、すべての型のすべての型がロードされることを期待していたすべてのアセンブリの型を反復します。これにより、ロード例外が明らかになります。そしてそれはうまくいった。それはすぐに "1つ以上を読み込むことができません"というエラーメッセージの標準ソースであるSystem.Reflection.ReflectionTypeLoadExceptionを投げた。デバッガでは、根本的な問題が何であるか教えてくれたLoaderExceptionsプロパティを調べることができました。

public class Program 
{ 
    public static void Main(string[] args) 
    { 
     var types = Assembly.GetExecutingAssembly().GetTypes(); 
    } 
} 
+1

これを行う(申し訳ありませんが、私のコードをコメントで見栄えさせることができませんでした)、私はそれがロードできなかったことを正確に教えてくれるポップアップを手に入れました。私の場合、実際の問題は強く署名されたアセンブリと署名のないアセンブリが混在していることです。 'try { var types = Assembly.GetExecutingAssembly()。GetTypes(); }キャッチ(ReflectionTypeLoadExceptionのEX) {foreachの(ex.LoaderExceptionsにおけるVAR項目) {MessageBox.Show(item.Message)。 } } ' –

+3

あなたはResharper Test RunnerがそのExceptionを捕らえる方法を持っていて、自分で書き込むことなくそれを取得できると思います。 –

6

シュナイダーの答えはうまく動作しますが、そこに多くの怠惰な人がいるならば、あなたは少し速くPowerShellでLoaderExceptionsを確認することができます。

[Reflection.Assembly]::LoadFile('<path to your assembly>') | % {$_.GetTypes()} 
$Error[0].Exception.InnerException.LoaderExceptions 
+0

'<あなたのアセンブリへのパス>'は絶対パスでなければなりません – Seafish

関連する問題