2016-08-03 29 views
7

Ich erhalte die folgende Fehlermeldung, wenn sie versuchen Unit-Tests in Visual Studio auszuführen:NUnit fehlgeschlagen DLL laden

NUnit failed to load w:\Repos\trading.tools\Trading.Tools.Test\bin\x64\Debug\Trading.Tools.Test.dll 

Ich bin mit

  • Visual Studio Gemeinschaft 2013
  • NUnit Adapter 3.4.0.0
  • NUnit 3.4.1

Das Seltsame ist, dass ich ein anderes Projekt habe, das genauso aufgebaut ist wie dieses und es funktioniert ganz gut.

Ich habe auch NUnit 3.4.1 heruntergeladen und installiert. Wenn ich renne

nunit3-console.exe Trading.Tools.Test.dll 

alles funktioniert gut. Irgendwelche Ideen, was ich tun kann?

Vielen Dank Konstantin

Edit # 1

Hier ist die vollständige Ausgabe der Konsole von Visual Studio, wenn sie versuchen alle Test auszuführen.

Test run will use DLL(s) built for framework Framework45 and platform X86. Following DLL(s) will not be part of run: 
Trading.Tools.Test.dll, Trading.Tools.dll are built for Framework Framework45 and Platform X64. 
Go to http://go.microsoft.com/fwlink/?LinkID=236877&clcid=0x409 for more details on managing these settings. 
NUnit Adapter 3.4.0.0: Test discovery starting 
NUnit failed to load w:\Repos\trading.tools\Trading.Tools.Test\bin\x64\Debug\Trading.Tools.Test.dll 
Assembly contains no NUnit 3.0 tests: w:\Repos\trading.tools\Trading.Tools\bin\x64\Debug\Trading.Tools.dll 
NUnit Adapter 3.4.0.0: Test discovery complete 

Wie man sieht es sehr offensichtlich ist, dass NUnit eine x86 Build erwartet, aber ich bauen für eine x64-Plattform. Und wieder, mein x64-Build funktioniert gut, wenn ich es mit nunit3-console.exe ausführen.

Was ich in der csproj Datei sehen, ist dies:

<Reference Include="nunit.framework, Version=2.6.4.14350, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL"> 
    <SpecificVersion>False</SpecificVersion> 
    <HintPath>..\packages\NUnit.3.4.1\lib\net45\nunit.framework.dll</HintPath> 
</Reference> 

Die hier seltsame Sache ist, dass es Version=2.6.4.14350 aber Bezugnahme auf eine 3.4.1 dll spezifiziert werden.

Also die nächste Frage von diesem Punkt ist, wie kann ich NUnit meinen x64 Build ausführen lassen? Irgendwelche Ideen?

+0

löschen Sie Ihre bin und obj Ordner und rebau es und versuchen zu laufen. es wird funktionieren Ich denke, –

+0

hast du überprüft, dass die Datei existiert und Timestamp der Zeit, wenn Sie das Programm erstellen/ausführen? – kurakura88

+0

@ShakirAhamed, löschte ich beide Verzeichnisse. Immer noch fehlgeschlagen ... – Konstantin

Antwort

20

Ich hatte ein ähnliches Problem, der Schlüssel ist die Tatsache, dass es der Test Runner in Visual Studio ist, der angibt, dass nur x86-Baugruppen getestet werden. Ich gehe davon aus, dass es dann den Einsatz des x86 NUnit Runner erzwingt. Um dies zu ändern (mindestens in VS2015), gehen Sie zu Test>Test Settings>Default Processor Architecture>X64.

+1

Vielen Dank, das hat funktioniert! Weißt du, in welcher Datei diese Einstellung gespeichert ist? – Konstantin

+0

Leider nicht sicher, aber wie es scheint, von Lösung zu Lösung zu ändern, und ändert sich nicht beim Wechseln von Konfigurationen ich vermute, dass es ein Teil der SUO-Datei sein wird. – Fishus

2

Sie können das Ausführungsziel auch in der Datei runsettings festlegen. Sie müssen dann diese Datei auswählen. Dies sollte die Lösung stabiler machen. A runsettings Datei, die dies nur eingestellt wie folgt aussehen:

enter image description here

es zu aktivieren, gehen Sie wie in der Abbildung unten gezeigt:

enter image description here

Wenn Sie es aus dem Testmenü auswählen (1), wird es als das ausgewählte im Menü (2) hinzugefügt, und ein Rebuild wird dann den Test im Test Explorer erscheinen lassen (3)

Es gibt einen zusätzlichen Bonus von uns eine runsettings-Datei, und das heißt, dass es dann ordnungsgemäß auf dem TFS-Build-System ausgeführt wird, wenn Sie das verwenden. Ich habe einen Blogbeitrag zu diesem Thema geschrieben, siehe http://hermit.no/how-to-control-the-selection-of-test-runner-in-tfsvsts-making-it-work-with-x86x64-selected-targets/

+0

Vielen Dank, das macht es wirklich stabiler. – Konstantin

0

Ich habe diesen Fehler beim Schreiben der Komponententestmethode erhalten. Und bemerkte die Ursache, dass eine der abhängigen DLL zum Laden fehlte. Dieser Fehler ("NUnit konnte die .dll nicht laden") wurde im Fenster Ausgabe ("Test") angezeigt, nachdem der Testmethodencode geändert und versucht wurde, ihn auszuführen. Nach dem Aktualisieren des nugget-Pakets für die abhängige DLL begann ninit, die Testprojekt-DLL auszuwählen, und Testfälle wurden ausgeführt.