使用NUnit在64位窗口上测试32位汇编

时间:2010-11-30 14:53:12

标签: c# .net unit-testing nunit

我正在使用C#和.NET 4.0来构建我当前的应用程序。对于单元测试,我在其最新版本中使用NUnit

在我的应用程序中,我必须使用32位DLL,因此我必须使用目标'x86'创建程序集。

应用程序本身在32位和64位Windows下都能正常工作,但我无法使用NUnit,因为在加载'x86'程序集时出现以下异常:

在设置 - >装配隔离中我使用'在每个装配的单独过程中运行测试',但没有用。

System.BadImageFormatException...

Server stack trace: 
   bei System.Reflection.Assembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection)
   bei System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
   bei System.Reflection.Assembly.Load(AssemblyName assemblyRef)
   bei NUnit.Core.Builders.TestAssemblyBuilder.Load(String path)
   bei NUnit.Core.Builders.TestAssemblyBuilder.Build(String assemblyName, Boolean autoSuites)
   bei NUnit.Core.Builders.TestAssemblyBuilder.Build(String assemblyName, String testName, Boolean autoSuites)
   bei NUnit.Core.TestSuiteBuilder.BuildSingleAssembly(TestPackage package)
   bei NUnit.Core.TestSuiteBuilder.Build(TestPackage package)
   bei NUnit.Core.SimpleTestRunner.Load(TestPackage package)
   bei NUnit.Core.ProxyTestRunner.Load(TestPackage package)
   bei NUnit.Core.ProxyTestRunner.Load(TestPackage package)
   bei NUnit.Core.RemoteTestRunner.Load(TestPackage package)
   bei System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Int32 methodPtr, Boolean fExecuteInContext, Object[]& outArgs)
   bei System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg, Int32 methodPtr, Boolean fExecuteInContext)

Exception rethrown at [0]: 
   bei System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
   bei System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
   bei NUnit.Core.TestRunner.Load(TestPackage package)
   bei NUnit.Util.TestDomain.Load(TestPackage package)
   bei NUnit.Core.ProxyTestRunner.Load(TestPackage package)
   bei NUnit.Util.RemoteTestAgent.AgentRunner.Load(TestPackage package)
   bei System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Int32 methodPtr, Boolean fExecuteInContext, Object[]& outArgs)
   bei System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg, Int32 methodPtr, Boolean fExecuteInContext)

Exception rethrown at [1]: 
   bei System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
   bei System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
   bei NUnit.Core.TestRunner.Load(TestPackage package)
   bei NUnit.Core.ProxyTestRunner.Load(TestPackage package)
   bei NUnit.Util.ProcessRunner.Load(TestPackage package)
   bei NUnit.Util.AggregatingTestRunner.Load(TestPackage package)
   bei NUnit.Util.TestLoader.LoadTest(String testName)

如何在64位版本的Windows上运行这些测试?

1 个答案:

答案 0 :(得分:1)

How do I investigate the course of a test's assembly refusing to load in NUnit? 回答了这个问题。 (Ref Ian Ringrose对这个问题的评论。)