2016-05-03 21 views
2

テストランナーで実行される一連のnunitテストがあります。NunitテストDLLは、別々に実行して実行します。第2のテストは失敗します。

2つの別々のDLL、私は彼らの両方の仕事独立して、それらを実行する場合

。 私がそれらを一緒に実行すると、2番目に失敗します。

私たちは、私たちのNHセッションのライフサイクルにまで問題をトレースしてきた構造マップ2.5.3

を使用しています。

 x.BuildInstancesOf<INHFactory>() 
       .AddInstances(z => z 
        .OfConcreteType<NHFactory>() 
        .WithName("JCDC") 
       ) 
       .CacheBy(InstanceScope.Singleton); 

私はそれらを実行する場合、別途セッションが毎回作成されますが、それらを一緒に実行する場合、同じものは、それがクラッシュする原因に再利用されます。

私はインスタンススコープのスレッドを試しましたが、喜びはありません。ObjectFactory.ResetDefaults()で構造マップを手動でリサイクルしようとしました。私のテストフィクスチャティアダウンで。

喜びはありません。

強制的にnunitを別のスレッドで実行する方法はありますか? またはdllの間でストラクチャマップファクトリをリサイクルする(ベーステストでのティアダウン)?

これに別の方法がありますか?複数:ここ

がフルブートストラップコードNUnitの2.xのの使用を想定

using System.Reflection; 
using JCDCHelper.Logging.Interfaces; 
using JCDCHelper.NhAccess.Interfaces; 
using JCDCHelper.NhAccess.BusinessObjects; 
using JCDCHelper.Persistence.BusinessObjects; 
using JCDCHelper.Persistence.Interfaces; 
using POCAdmin3G.DAL.Interfaces; 
using POCAdmin3G.Jcdc.EO; 
using POCAdmin3G.Jcdc.Map; 
using StructureMap; 
using StructureMap.Attributes; 

namespace _Test_DAL 
{ 
    public class _BootstrapStuctureMap 
    { 
     private static bool _hasStarted; 

     /// <summary> 
     /// Bootstraps the structure map. 
     /// Set up IOC for all parts of application 
     /// Set up NHFactory for each DB with scope of one per application. 
     /// Set up NHSession for Tran and NoTran. Give it a scope of HttpRequest or Thread 
     /// </summary> 
     /// <Author>fink.pete</Author> 
     /// <CreateDate>8/31/2010</CreateDate> 
     public void BootstrapStructureMap() 
     { 
      _hasStarted = true; 

      ObjectFactory.Initialize(x => 
      { 
       x.PullConfigurationFromAppConfig = false; 
       x.Scan(y => 
       { 
        y.Assembly(Assembly.GetAssembly(typeof(IPOCContrCtrlDAL))); // TestDisplay DAL 
        y.Assembly(Assembly.GetAssembly(typeof(IWebAccess))); // JCDCHelper Persistance 
        y.Assembly(Assembly.GetAssembly(typeof(INHSession))); // JCDCHelper NhAccess 
        y.Assembly(Assembly.GetAssembly(typeof(INetLog))); // JCDCHelper Logging 

        y.WithDefaultConventions(); 
       } 
        ); 

       // needed for new one WebAccess per application 
       x.BuildInstancesOf<IWebAccess>() 
        .TheDefaultIsConcreteType<WinFormAccess>() 
        .CacheBy(InstanceScope.Hybrid); 

       // needed for new one Factory for JCDC per application 
       x.BuildInstancesOf<INHFactory>() 
        .AddInstances(z => z 
         .OfConcreteType<NHFactory>() 
         .WithName("JCDC") 
        ) 
        .CacheBy(InstanceScope.Singleton); 

       // needed for NHSession for JCDC HasTran per HttpRequest 
       x.ForRequestedType<INHSession>() 
        .AddInstances(z => z 
         .OfConcreteType<NHSession>() 
         .WithName("JCDC_HasTrans") 
         .SetProperty(y => y.DBNameAndHasTran = "JCDC_HasTrans") 
        ) 
        .AddInstances(z => z 
         .OfConcreteType<NHSession>() 
         .WithName("JCDC_HasNoTrans") 
         .SetProperty(y => y.DBNameAndHasTran = "JCDC_HasNoTrans") 
        ) 
        .CacheBy(InstanceScope.Hybrid); 
      }); 

      //Debug.WriteLine(ObjectFactory.WhatDoIHave()); 
      //ObjectFactory.AssertConfigurationIsValid(); 

      // Set up the NhibernateFactories 
      INHFactory jcdcFactory = ObjectFactory.GetNamedInstance<INHFactory>("JCDC"); 
      jcdcFactory.BuildFactoryByConfigFile<AcademicEO, AcademicEOMap>("~/JcdcDb.config"); 
     } 

     /// <summary> 
     /// Restarts StructureMap. Reset to original defaults. 
     /// </summary> 
     /// <Author>fink.pete</Author> 
     /// <CreateDate>8/31/2010</CreateDate> 
     public static void Restart() 
     { 

      if (_hasStarted) 
      { 
       ObjectFactory.ResetDefaults(); 
      } 
      else 
      { 
       Bootstrap(); 
       _hasStarted = true; 
      } 
     } 

     public static void Bootstrap() 
     { 
      new _BootstrapStuctureMap().BootstrapStructureMap(); 
     } 
    } 
} 

答えて

0

で、NUnitのコンソールオプション/プロセスを使用して、別のプロセスで各アセンブリを実行します。

関連する問題