2011-08-04 13 views
5

Quando cerco di utilizzare NUnit-console.exe per eseguire tutti i test in un file di soluzione in quanto tale:Esecuzione di NUnit-console su un file di soluzione porta a System.IO.FileLoadException

nunit-console.exe MyProject.sln

I ottenere la seguente eccezione (mostrata sotto). Tuttavia, quando si esegue il runner della console su QUALSIASI dei progetti nella mia struttura di cartelle, il runner funziona bene e non mi dà mai la seguente eccezione. Sono anche abbastanza sicuro che la versione della libreria nunit a cui sto collegando sia la stessa del runner che sto usando. Inoltre, la mia soluzione non fa riferimento a progetti esterni alla struttura di directory che contiene il mio file .sln.

Qualcuno ha idea di cosa posso fare !? :(

Grazie! Phil

NUnit version 2.5.10.11092 
Copyright (C) 2002-2009 Charlie Poole. 
Copyright (C) 2002-2004 James W. Newkirk, Michael C. Two, Alexei A. Vorontsov. 
Copyright (C) 2000-2002 Philip Craig. 
All Rights Reserved. 

Runtime Environment - 
    OS Version: Microsoft Windows NT 6.1.7601 Service Pack 1 
    CLR Version: 4.0.30319.1 (Net 4.0) 

ProcessModel: Default DomainUsage: Default 
Execution Runtime: net-4.0 
Unhandled Exception: 
System.IO.FileLoadException: Could not load file or assembly 'nunit.framework, Version=2.5.10.11092, Culture=neutral, Pu 
blicKeyToken=96d09a1eb7f44a77' or one of its dependencies. The located assembly's manifest definition does not match the 
assembly reference. (Exception from HRESULT: 0x80131040) 
File name: 'nunit.framework, Version=2.5.10.11092, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77' 

Server stack trace: 
    at System.ModuleHandle.ResolveType(RuntimeModule module, Int32 typeToken, IntPtr* typeInstArgs, Int32 typeInstCount, 
IntPtr* methodInstArgs, Int32 methodInstCount, ObjectHandleOnStack type) 
    at System.ModuleHandle.ResolveTypeHandleInternal(RuntimeModule module, Int32 typeToken, RuntimeTypeHandle[] typeInsta 
ntiationContext, RuntimeTypeHandle[] methodInstantiationContext) 
    at System.ModuleHandle.ResolveTypeHandle(Int32 typeToken, RuntimeTypeHandle[] typeInstantiationContext, RuntimeTypeHa 
ndle[] methodInstantiationContext) 
    at System.Reflection.RuntimeModule.ResolveType(Int32 metadataToken, Type[] genericTypeArguments, Type[] genericMethod 
Arguments) 
    at System.Reflection.CustomAttribute.FilterCustomAttributeRecord(CustomAttributeRecord caRecord, MetadataImport scope 
, Assembly& lastAptcaOkAssembly, RuntimeModule decoratedModule, MetadataToken decoratedToken, RuntimeType attributeFilte 
rType, Boolean mustBeInheritable, Object[] attributes, IList derivedAttributes, RuntimeType& attributeType, IRuntimeMeth 
odInfo& ctor, Boolean& ctorHasParameters, Boolean& isVarArg) 
    at System.Reflection.CustomAttribute.GetCustomAttributes(RuntimeModule decoratedModule, Int32 decoratedMetadataToken, 
Int32 pcaCount, RuntimeType attributeFilterType, Boolean mustBeInheritable, IList derivedAttributes, Boolean isDecorate 
dTargetSecurityTransparent) 
    at System.Reflection.CustomAttribute.GetCustomAttributes(RuntimeType type, RuntimeType caType, Boolean inherit) 
    at NUnit.Core.CoreExtensions.InstallAdhocExtensions(Assembly assembly) 
    at NUnit.Core.Builders.TestAssemblyBuilder.Load(String path) 
    at NUnit.Core.Builders.TestAssemblyBuilder.Build(String assemblyName, Boolean autoSuites) 
    at NUnit.Core.Builders.TestAssemblyBuilder.Build(String assemblyName, String testName, Boolean autoSuites) 
    at NUnit.Core.TestSuiteBuilder.Build(TestPackage package) 
    at NUnit.Core.SimpleTestRunner.Load(TestPackage package) 
    at NUnit.Core.ProxyTestRunner.Load(TestPackage package) 
    at NUnit.Core.ProxyTestRunner.Load(TestPackage package) 
    at NUnit.Core.RemoteTestRunner.Load(TestPackage package) 
    at System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, 
Int32 methodPtr, Boolean fExecuteInContext, Object[]& outArgs) 
    at System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg, Int32 methodPtr, Boolean fExec 
uteInContext) 

Exception rethrown at [0]: 
    at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg) 
    at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type) 
    at NUnit.Core.TestRunner.Load(TestPackage package) 
    at NUnit.Util.TestDomain.Load(TestPackage package) 
    at NUnit.ConsoleRunner.ConsoleUi.Execute(ConsoleOptions options) 
    at NUnit.ConsoleRunner.Runner.Main(String[] args) 

WRN: Assembly binding logging is turned OFF. 
To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1. 

Note: There is some performance penalty associated with assembly bind failure logging. 
To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog]. 

risposta

4

Cercare di utilizzare il Fusion Log Viewer per vedere ciò che il montaggio non riesce a caricare. Dovrebbe dire non solo quale file si sta venendo a mancare, ma in cui si è cercato in cerca di quel file.

+0

Ah! Questo strumento è magico! Grazie Pedro :) Si scopre che stiamo usando un software di terze parti che includeva una dll nunit che era una versione diversa dalla nostra. E nunit stava trovando quella dll prima di trovare la nostra. Dato che non abbiamo bisogno di eseguire nunit su questo software di terze parti, abbiamo appena cancellato la loro versione della DLL. Sarei interessato a sapere se c'è un modo migliore per aggirare questo, ma per ora, sono contento. – Phil

2

Nel mio caso nunit-console.exe non ha rispettato il reindirizzamento assembly da web|app.config. a meno che non si fornisce /domain=multiple

Il mio problema: EntityFrameworkTesting.Moq -> richieste Moq, versione = 4.2.1409.1722

Avevo già un assembly più recente di riferimento.

La soluzione per me è stato quello di aggiungere /domain=multiple parametro. vedere la NUnit docs

Allora corro:

D:\tools\NUnit-2.6.4\bin\nunit-console.exe %SOLUTION_PATH%\Project.sln /config:Release /framework:net-4.0 /domain=multiple /xml=nunit-result.xml