2011-12-06 5 views
2

オーシャンSDKからユニットテストサンプルを実行しようとすると、NUnit.exeにDLLをロードしようとするとエラーが発生します。 誰かが理由を助けることができますか?以下NUnit.exeからオーシャンユニットテスト

例外:

System.IO.FileNotFoundException... 

Server stack trace: 
    at System.ModuleHandle.ResolveType(Int32 typeToken, RuntimeTypeHandle* typeInstArgs, Int32 typeInstCount, RuntimeTypeHandle* methodInstArgs, Int32 methodInstCount) 
    at System.ModuleHandle.ResolveTypeHandle(Int32 typeToken, RuntimeTypeHandle[] typeInstantiationContext, RuntimeTypeHandle[] methodInstantiationContext) 
    at System.Reflection.Module.ResolveType(Int32 metadataToken, Type[] genericTypeArguments, Type[] genericMethodArguments) 
    at System.Reflection.CustomAttribute.FilterCustomAttributeRecord(CustomAttributeRecord caRecord, MetadataImport scope, Assembly& lastAptcaOkAssembly, Module decoratedModule, MetadataToken decoratedToken, RuntimeType attributeFilterType, Boolean mustBeInheritable, Object[] attributes, IList derivedAttributes, RuntimeType& attributeType, RuntimeMethodHandle& ctor, Boolean& ctorHasParameters, Boolean& isVarArg) 
    at System.Reflection.CustomAttribute.GetCustomAttributes(Module decoratedModule, Int32 decoratedMetadataToken, Int32 pcaCount, RuntimeType attributeFilterType, Boolean mustBeInheritable, IList derivedAttributes) 
    at System.Reflection.CustomAttribute.GetCustomAttributes(RuntimeType type, RuntimeType caType, Boolean inherit) 
    at System.RuntimeType.GetCustomAttributes(Type attributeType, 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.BuildSingleAssembly(TestPackage package) 
    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.PrivateProcessMessage(RuntimeMethodHandle md, Object[] args, Object server, Int32 methodPtr, Boolean fExecuteInContext, Object[]& outArgs) 
    at System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg, Int32 methodPtr, Boolean fExecuteInContext) 

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.Util.TestLoader.LoadTest(String testName) 
+0

すべてのNUnitアセンブリとオーシャンdllを拡張フォルダに入れてこのメッセージを取り除きました。しかし今、私たちはそれを実行するときにエラーが発生します。 Slb.Ocean.Petrel.Testing.PetrelEngineでSystem.Reflection.Module._GetTypesInternal(StackCrawlMark&stackMark)Slb.Ocean.Petrel.Testing.PetrelEngine.InitializeInstanceでSystem.Reflection.Assembly.GetTypesで () () でC:\ Program Files \ Schlumberger \ Ocean 2011 \ Samples \ UnitTesting \ UnitTest \ AssemblySetup.csのUnitTestDemo.AssemblySetUp.RunBeforeAnyTests()で を実行してください:Line 30 – Prem

答えて

4

この場合は、すでに海のDevを経由して解決しました。 Portalには、サンプルのreadMeファイル内のすべての命令(たとえば、「petrelのルートにコピーされた追加のテストアセンブリがあることを確認する」など)を実行することが非常に重要です(NUnitルートのDLLだけでなくlib-サブフォルダ。 nunit.exe.configのProbingPathをPetrelからProbingPathで拡張する必要がありますが、置き換えられません.2)何らかの理由で、ユーザがNUnitの "framework"サブフォルダの内容をコピーする必要があるかもしれません。 Petrelの根にも。

+1

このアプローチはPetrel/Oceanで動作しないようです2013年ですか? – Tessem

+0

私はもうオーシャンチームには入っていませんが、2013年のリリースから、オーシャンは「統合型」NUnitエンジンを備えています。チャンスがあれば、Ocean Developers Guide、Volume 11: "Licensing、Deployment 、およびユニットテスト」を参照してください。 – Alex

0

おそらく、NUnitの[シャドウコピーを有効にする]オプションがオンになっている可能性があります。このオプションをオフにすると、テストの実行に必要なファイルがPetrelのルートフォルダにコピーされます。