2011-08-04 6 views
5

Khi tôi cố gắng sử dụng nunit-console.exe để chạy tất cả các bài kiểm tra trong một file giải pháp như vậy:Chạy nunit-giao diện điều khiển trên một tập tin giải pháp dẫn đến System.IO.FileLoadException

nunit-console.exe MyProject.sln

tôi nhận được ngoại lệ sau (được hiển thị bên dưới). Tuy nhiên khi chạy giao diện điều khiển Á hậu trên BẤT CỨ của các dự án trong cấu trúc thư mục của tôi, các Á hậu hoạt động tốt và không bao giờ mang lại cho tôi ngoại lệ sau đây. Tôi cũng khá chắc chắn rằng phiên bản của thư viện nunit mà tôi đang liên kết đến giống với phiên bản mà tôi đang sử dụng. Ngoài ra, giải pháp của tôi không tham chiếu bất kỳ dự án nào nằm ngoài cấu trúc thư mục chứa tệp .sln của tôi.

Có ai có bất kỳ đầu mối nào tôi có thể làm không !? :(

Cảm ơn! 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]. 

Trả lời

4

Hãy thử sử dụng Fusion Log Viewer để xem những gì đang lắp ráp không tải. Nó sẽ cho bạn biết không chỉ những gì tập tin đó là thất bại, nhưng mà nó đã cố gắng tìm kiếm cho rằng nộp.

+0

Ah! Công cụ này là phép thuật! Cảm ơn Pedro :) Hóa ra chúng tôi đang sử dụng một phần mềm của bên thứ 3 bao gồm một dll nunit khác với phiên bản của chúng tôi. Và nunit đã tìm thấy dll đó trước khi tìm thấy chúng ta. Vì chúng tôi không cần chạy tiện ích trên phần mềm của bên thứ ba này, chúng tôi vừa xóa phiên bản dll của họ. Tôi sẽ quan tâm để biết nếu có một cách tốt hơn xung quanh này, nhưng bây giờ, tôi là nội dung. – Phil

2

Trong trường hợp của tôi nunit-console.exe không tôn trọng chuyển hướng lắp ráp từ web|app.config. trừ khi bạn cung cấp /domain=multiple

Vấn đề của tôi: EntityFrameworkTesting.Moq -> yêu cầu Moq, Phiên bản = 4.2.1409.1722

Tôi đã có một phiên bản mới hơn được tham chiếu.

Giải pháp đối với tôi là để thêm /domain=multiple tham số. thấy NUnit docs

Vì vậy, tôi chạy:

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