none
Exception bei Assembly.GetTypes RRS feed

  • Frage

  • Hallo,

    bei meinem Versuch einen Integrationstest zu erstellen erhalte ich bei der Ausführung eine unerwartete Exception beim Versuch die Types einer Assembly abzufragen.

    Details:
    Zur Initialisierung meiner Testklasse (ClassInitialize()) erstelle ich ein "TestVerzeichnis".
    In diese werden dann alle für den Test benötigte "sub"- Assemblies kopiert.

    Anschließend wird die "Hauptkomponente" gestartet, welche im "TestVerteichnis" nach Assemblies sucht die bestimmte Types enthalten.
    Während dieser Suche kommt es - nach dem die Assembly erfolgreich geladen wurde - zu einer ReflectionTypeLoadException, in welcher bemängelt wird, dass:

    "Die Datei oder Assembly "UpdateServiceLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" oder eine Abhängigkeit davon wurde nicht gefunden. Das System kann die angegebene Datei nicht finden."

    Nun befindet sich aber jene "UpdateServiceLib" sowie deren Abhängigkeiten in diesem "TestVerzeichnis".

    Meine Vermutung:
    die "Hauptkomponente" wird im Entwicklungspfad gestartet und dann der Suchpfad auf das "TestVerzeichnis" gestellt.
    Die später geladenen Assemblies haben teilweise die selben Abhängikeiten wie die "Hauptkomponente". Die Hauptkomponente findet aber ihre Abhängigkeiten im Entwicklungspfad. Somit wird zur Laufzeit versucht die "gleiche (codebase)" einmal aus dem Entwicklungspfade und später aus dem "TestVerzeichnis" zu laden, und das ist wohl die Ursache meines Problems...

    Liege ich mit meiner Vermutung richtig?
    Wie kann ich solche Testszenarien "richtiger" angehen?

    Danke für Hilfe und Hinweise.

    Gruß

    Rainer

     

    Donnerstag, 30. September 2010 14:38

Antworten

  • Zu meiner Frage 2 : "Wie kann ich solche Testszenarien "richtiger" angehen" habe ich eine Antwort gefunden:

    Ich nehme die "benötigten sub-Asseblies als "References" in mein Testprojekt auf. Somit sind all benötigten .dll(s) im bin\debug Ordner des Testprojekts und es verwenden alle die selben Klassenbibliotheken wodurch es nicht mehr zur Exception kommt.

    Gruß

    Rainer

    • Als Antwort markiert Rainer Queck Freitag, 1. Oktober 2010 07:09
    Freitag, 1. Oktober 2010 07:09