8

Wenn ich meine Komponententests mit dem Resharper Unit Test Runner starte oder debugge, erscheint ein Dialogfeld mit der Meldung "Unit Test Runner failed um Tests - Können Sie eine oder mehrere der angeforderten Typen laden, um weitere Informationen, um die Loaderexceptions-Eigenschaft abrufen ".So diagnostizieren Sie den Resharper Unit Test Runner "Kann einen oder mehrere der angeforderten Typen nicht laden" Fehler

enter image description here

Jetzt neu erstellt ich versucht habe, reinigt, manuell Ordner Visual Studio neu gestartet Löschen, Hardware neu starten, in Ausgabe-/Debug-Fenstern suchen und abends den R # "internen" Modus aktivieren, so dass ich seine Protokolle sehen kann (geschrieben in% Temp% \ JetLogs, wie ich es verstehe), aber nichts davon löst es oder g Irgendwelche Hinweise überhaupt. Ich habe "Debugging" R # versucht, aber der Dialog erscheint wieder, bevor der Debugger irgendwelche Ausnahmen trifft.

Wie zur Hölle soll ich das lösen? Es ist extrem nervig!

Ich verwende:

  • R # 2016.1.2
  • NUnit 3.2.1
  • Visual Studio 2015-Update 2 (14.0.25123)
+0

Es scheint dieser Fehler direkt von Nunit kommt, aber ich bin überrascht, dass R # nichts tut mir dies zu diagnostizieren ... – Schneider

+0

ReSharper nicht bekommen eine Chance, wie NUnit die Fänge Ausnahmen und Morphen in einem fehlgeschlagenen Testergebnis (ohne alle Details, das ist das eigentliche Problem). – Monoman

Antwort

15

Ich landete Diagnose Dies mit einer ziemlich einfachen Methode:

Ich konvertierte meine Einheit Test Assembly von einer Klassenbibliothek in eine Konsolenanwendung und fügte ein Main hinzu Einstiegspunkt (siehe unten). Innerhalb dieser Klasse iteriere ich alle Assembly-Typen, von denen ich hoffte, dass sie alle Typen & abhängiger Assemblys laden würden, was Lastausnahmen ergeben würde. Und ja, es hat funktioniert. Es warf schnell eine System.Reflection.ReflectionTypeLoadException, die die kanonische Quelle der Fehlermeldung ist "Kann nicht laden ...". Im Debugger konnte ich die Eigenschaft LoaderExceptions untersuchen, die mir sagte, was das zugrunde liegende Problem war.

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

Und dadurch (sorry, ich konnte meinen Code im Kommentar nicht gut aussehen), bekam ich ein Popup, das mir genau sagte, welche Assembly nicht geladen werden konnte und warum. In meinem Fall war das wirkliche Problem eine Mischung aus stark signierten und unsignierten Assemblys: 'try { var types = Assembly.GetExecutingAssembly(). GetTypes(); } catch (Reflection ex) { foreach (var Artikel in ex.LoaderExceptions) { MessageBox.Show (item.Message); } } ' –

+3

Sie würden denken, dass Resharper Test Runner eine Möglichkeit haben würde, diese Ausnahme zu erfassen und es Ihnen zu ermöglichen, sie wiederherzustellen, ohne sie selbst schreiben zu müssen. –

6

Schneiders Antwort wird gut funktionieren, aber wenn es da draußen mehr faule Leute sind, können Sie die LoaderExceptions in Powershell ein wenig schneller überprüfen.

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

'' muss ein absoluter Pfad sein – Seafish

Verwandte Themen