8 Stimmen

FileNotFoundException beim Ausführen von NUnit-Tests aus TeamCity

Ich verwende den in TeamCity integrierten NUnit-Runner, um Tests auszuführen, die in DLL-Dateien gespeichert sind.

Meine .DLLs verweisen auf andere DLLs, die sich im selben Ordner befinden.

Wenn diese ausgeführt werden, erhalte ich eine FileNotFoundException für die referenzierten DLLs.

Wie kann ich das beheben? Ich denke, vielleicht der TC NUnit-Runner verwendet einige andere Dir als die wichtigsten app-Ausführung-Ordner, und somit verhindern, dass von Dateien, die eigentlich neben der Test-DLL zu nicht ordnungsgemäß laden, aber kann diese Behauptung noch nicht beweisen...

Ist dieses Verhalten noch jemandem aufgefallen?

10voto

lysergic-acid Punkte 18800

OK, das Problem ist gelöst, und es ist in der Tat dumm und peinlich:

Ich habe den NUnit Test Runner so eingestellt, dass er diese Tests ausführt:

**/*.Tests.dll

Dies bedeutet, dass sie Tests aus folgenden Bereichen umfasst /bin/Debug/ und auch aus anderen Ordnern, wie z. B. obj/

In diesen Ordnern sind natürlich keine Verweise enthalten, so dass dieselben Tests zweimal ausgeführt werden und einige davon natürlich fehlschlagen!

1voto

Eugene Petrenko Punkte 4566

Die Pfade beziehen sich auf das Build-Checkout-Verzeichnis, nicht auf ein Arbeitsverzeichnis. Wenn Sie andere Pfade benötigen, verwenden Sie %reference% Syntax, um auf TeamCity-Eigenschaften mit einem Verzeichnispfad zu verweisen. Führen Sie es unter Windows aus? Verwenden Sie TeamCity 6.5?

Wenn das nicht hilft, wenden Sie sich bitte an teamcity-feedback@jetbrains.com

0voto

SetyCZ Punkte 150

In meinem Fall handelte es sich bei der fehlenden DLL um eine systemeigene Bibliothek, die nicht geladen werden konnte, weil auf dem Build-Agent eine falsche Version der VC-Laufzeitumgebung installiert war. Meine Lösung bestand darin, Runtime-DLLs hinzuzufügen (zu finden in ' C:\Program Dateien (x86) \Microsoft Visual Studio 11.0 \VC\redist\x86\Microsoft.VC110.CRT ') direkt in das Projekt (Build-Aktion = Inhalt, Kopieren in das Ausgabeverzeichnis = Immer kopieren). Dies macht auch die Installation freundlicher.

Ich hoffe, das hilft.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X