2016-06-24 18 views
8

Po uruchomieniu lub debugowaniu testów jednostkowych za pomocą programu Resharper Unit Test Runner pojawia się okno dialogowe z informacją, że "Uruchomienie testu jednostki nie powiodło się aby uruchomić testy - nie można załadować jedną lub więcej żądanych typów pobierania właściwości LoaderExceptions więcej informacji ".Jak zdiagnozować moduł testowy modułu Resharpera "Nie można załadować jednego lub więcej żądanych typów" błąd

enter image description here

teraz próbowałem odbudowuje, czyści foldery ręcznie usuwanie wizualne restartuje studio, sprzętowy uruchamia się ponownie, przeglądając okna wyjściowe/debugujące, a wieczorem włącza tryb R # "wewnętrzny", dzięki czemu mogę zobaczyć dzienniki (zapisane w% Temp% \ JetLogs, tak jak rozumiem), ale nic z tego nie rozwiązuje w ogóle nie ma żadnych wskazówek. Próbowałem "debuggowania" R #, ale znowu pojawi się okno dialogowe, zanim debugger trafi żadnych wyjątków.

Jak do cholery mam rozwiązać ten problem? To bardzo denerwujące!

Używam:

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

Wydaje się ten błąd jest pochodzących bezpośrednio z NUnit, ale jestem zaskoczony, że R # nie wszystko, aby pomóc mi zdiagnozować to zrobić ... – Schneider

+0

Resharper nie dostać szansę, jak NUnit łapie wyjątki i zmiany w wyniku testu zakończonego niepowodzeniem (bez wszystkich szczegółów, to jest prawdziwy problem). – Monoman

Odpowiedz

15

skończyło się na diagnozowaniu to z dość prostą metodą:

Przekształciłem zespół testu urządzenia z biblioteki klas w aplikację konsoli i dodano główną punkt wejścia (pokazany poniżej). Wewnątrz I iterate wszystkich typów złożeń, które miałem nadzieję, że wszystkie zestawy zależne od typu & do załadowania, które ujawniłyby wszelkie wyjątków obciążenia. I tak, zadziałało. Szybko rzucił System.Reflection.ReflectionTypeLoadException, który jest kanonicznym źródłem komunikatu o błędzie "Nie można załadować jednego lub więcej ...". W debugerze mogłem sprawdzić właściwość LoaderExceptions, która wyjaśniła mi, jaki był podstawowy problem.

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

I robiąc to (przykro mi, nie mogłem dostać mojego kodu, by wyglądać dobrze w komentarzu), dostałem popup informujący mnie dokładnie, jakiego zespołu nie mógł załadować, i dlaczego. W moim przypadku prawdziwym problemem było połączenie silnie podpisanych i niepodpisanych zestawów: 'try { var typy = Assembly.GetExecutingAssembly(). GetTypes(); } catch (ReflectionTypeLoadException ex) { foreach (var item w ex.LoaderExceptions) { MessageBox.Show (item.Message); } } ' –

+3

Można by pomyśleć, że Resharper Test Runner będzie miał sposób na złapanie tego wyjątku i pozwoli ci go odzyskać bez konieczności samodzielnego pisania. –

6

odpowiedź Schneidera będzie działać dobrze, ale jeśli nie są bardziej leniwych tam można sprawdzić LoaderExceptions w PowerShell nieco szybciej.

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

'<ścieżka do twojego zestawu>' musi być ścieżką absolutną – Seafish

Powiązane problemy