Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 如何在MSpec中的每个测试中运行安装程序和拆卸代码?_.net_Nhibernate_Mspec - Fatal编程技术网

.net 如何在MSpec中的每个测试中运行安装程序和拆卸代码?

.net 如何在MSpec中的每个测试中运行安装程序和拆卸代码?,.net,nhibernate,mspec,.net,Nhibernate,Mspec,我有设置和拆除NHibernate的通用代码,我几乎所有的测试都需要它。是否有一种方法将“所有测试的需求”代码包含在一个地方,然后将其应用于所有测试?(如Nunit的设置和拆卸方法) 使用IAssemblyContext接口创建一个类。您的规范类不会从此继承 public class DataSpecificationBase : IAssemblyContext { public static Configuration configuration;

我有设置和拆除NHibernate的通用代码,我几乎所有的测试都需要它。是否有一种方法将“所有测试的需求”代码包含在一个地方,然后将其应用于所有测试?(如Nunit的
设置
拆卸
方法)


使用IAssemblyContext接口创建一个类。您的规范类不会从此继承

 public class DataSpecificationBase : IAssemblyContext
    {
        public static Configuration configuration;

        void IAssemblyContext.OnAssemblyComplete()
        {

            NHibernateSession.CloseAllSessions();
            NHibernateSession.Reset();

        }

        void IAssemblyContext.OnAssemblyStart()
        {
            HibernatingRhinos.Profiler.Appender.NHibernate.NHibernateProfiler.Initialize();

            string[] mappingAssemblies = RepositoryTestsHelper.GetMappingAssemblies();
            configuration = NHibernateSession.Init(new SimpleSessionStorage(),
                                                   mappingAssemblies,
                                                   new AutoPersistenceModelGenerator().Generate(),
                                                   "database.config");

            InitializeUserSession();            

            Console.WriteLine("OnAssemblyStart");
        }

        void InitializeUserSession()
        {
            ITWEntityRepo entityRepo = new TWEntityRepo();
            // TWEntity entity  = entityRepo.GetByUserName("1EB6472B-965B-41D5-8D77-3880D02FF518");
            TWEntity entity = entityRepo.GetByUserName("87BCA093-0B8C-4FDF-ABE8-1A843BA03608");

            UserSession.Instance().User = UserFactory.Create(entity);
        }
    }

@阿利斯泰尔:这不是每次测试都执行,而是一次完成。这个答案可能不是OP想要的!AssemblyContext方法对所有测试执行一次,而NUnit的Setup和TearDown方法对每个测试执行一次!MSpec没有您想要的概念。
 public class DataSpecificationBase : IAssemblyContext
    {
        public static Configuration configuration;

        void IAssemblyContext.OnAssemblyComplete()
        {

            NHibernateSession.CloseAllSessions();
            NHibernateSession.Reset();

        }

        void IAssemblyContext.OnAssemblyStart()
        {
            HibernatingRhinos.Profiler.Appender.NHibernate.NHibernateProfiler.Initialize();

            string[] mappingAssemblies = RepositoryTestsHelper.GetMappingAssemblies();
            configuration = NHibernateSession.Init(new SimpleSessionStorage(),
                                                   mappingAssemblies,
                                                   new AutoPersistenceModelGenerator().Generate(),
                                                   "database.config");

            InitializeUserSession();            

            Console.WriteLine("OnAssemblyStart");
        }

        void InitializeUserSession()
        {
            ITWEntityRepo entityRepo = new TWEntityRepo();
            // TWEntity entity  = entityRepo.GetByUserName("1EB6472B-965B-41D5-8D77-3880D02FF518");
            TWEntity entity = entityRepo.GetByUserName("87BCA093-0B8C-4FDF-ABE8-1A843BA03608");

            UserSession.Instance().User = UserFactory.Create(entity);
        }
    }