.net - 如何在 MSpec 中为每个测试运行设置和拆卸代码?

标签 .net nhibernate mspec

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

[Subject("Accessing the TAE allocation page")]
public class when_a_request_to_the_tae_allocation_page_is_made
{
    Establish context = () => NHTestHelper.StartTest(); //need for all tests

    Because of = () => result = new AllocationController(true).Index();

    It should_display_the_page = () => result.ShouldBeAView();

    Cleanup nh = () => NHTestHelper.EndTest(); //need for all tests

    static ActionResult result;
}

最佳答案

有一个使用 IAssemblyContext 接口(interface)的类。您的规范类不继承自此。

 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);
        }
    }

关于.net - 如何在 MSpec 中为每个测试运行设置和拆卸代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5906174/

相关文章:

.net - DataType(DataType.Date) 格式 (MVC)

异步函数调用异步函数的 C# 性能影响

nhibernate - SubSonic 与 CaSTLe ActiveRecord

c# - 为什么这个测试失败了?

c# - 为什么这个继承的 Establish 会被执行多次?

java - 用于创建特定类型对象的设计模式

.net - Azure:Function App Cosmosdb触发本地开发

mysql - 为什么我使用 nhibernate 的 asp.net-mvc 站点会停止更新和删除?

.net - NHibernate:覆盖 Equals 和 GetHashCode 的原因

c# - 如何在继承类的规范中包含基类的规范?