• NHibernate初探(三) 简单且完整的测试示例


    Lee的原例实现的测试解决方案。是进行以后各部分学习的基础。

    (一)建立Domain类库项目。

    这个项目主要用于持久类与嵌入的映射文件的存在库。

    还以Customer为例子。

    ·数据库中主要的三个字段:customerid,firstname,lastname

    ·持久类Customer的属性:Unid(这里用Unid,不用与数据库的customerid,主要目的是更好的理解mapping关系);FirstNameLastName

    ·引用类库:可能会用到Iesi.Collections.dll

    这里代码我就不贴了。

    说明:映射文件要是嵌入的类型。

    (二)建立Data类库项目。

    这个项目主要用于建立数据(NHB)与Mapping的关系。

    ·NHBHelper类:用于获取ISessionNHB工作单元)

    ·NHBControl类:用于数据逻辑(Isession——mapping

    ·NHibernate.cfg.xml:用于配置数据库类型、映射类及其它。(现在好多节点没深入理解意思)

    ·引用类库:NHibernate.dllCastle.DynamicProxy2.dllCastle代理必须);Domain.dll(持久类及mapping

    贴出两个类:

    public class NHBHelper

        {

            private ISessionFactory SessionFactory;

            public NHBHelper():this(@"E:\test8\NHBTraffic\Data\NHibernate.cfg.xml")

            { }

            public NHBHelper(string strPath)

            {

                SessionFactory=GetCurrentSession(strPath);

            }

            private ISessionFactory GetCurrentSession(string strPath)

            {

                return (new Configuration()).Configure(strPath).BuildSessionFactory();

            }

            public ISession GetSession()

            {

                return SessionFactory.OpenSession();

            }

    }

    注意:要注意NHibernate.cfg.xml文件的路径。因为这个示例还要在Web项目里应用,所以我设置了路径

    public class NHBControl

        {

            #region Init

            private ISession _Session;

            NHBHelper helper = new NHBHelper();

            #endregion

     

            #region create

            public NHBControl()

            {

                _Session = helper.GetSession();

            }        

        #endregion

    }

    这个类没有什么可说明的。

    (三)建立SelfTest类库

    主要用于测试

    我添加了一个TestHql类,用于测试。

    ·引用类库:Domain.dllData.dllnunit.framework.dll

    (四)为解决方案新建网站Web

    ·引用类库为:Domain.dllData.dll

    (五)测试

    测试(1)通过Unid返回Customer实例

    NHBControl

    public Customer GetCustomerById(int Iid)

    {

    return _Session.Get<Customer>(Iid);

    }

     

    TestHql

    [Test]

    public void TestGetOne()

    {

      Customer customer = cc.GetCustomerById(100);

      Assert.IsNull(customer);

    }

     

    eb

    protected void Page_Load(object sender, EventArgs e)

    {

      Customer customer = cc.GetCustomerById(1);

      string s = customer.FirstName;

      Response.Write(s);

    }

    成功。

    如果要添加其它的数据操作及hql测试,我全加在NHBControl

    而测试就在TestHql类进行。

    好了,有了这个解决方案,以后的测试可以明了的进行了。

     这里不提供源码下载,因为想让大家自己手动建立测试项目,并且自己调度通过,来解决其中的各个问题。

    参考Lee的系列。详细请参见 YJingLee's blog

    http://www.cnblogs.com/lyj/archive/2008/10/30/1323099.html

    博客园大道至简

    http://www.cnblogs.com/jams742003/

    转载请注明:博客园

  • 相关阅读:
    高级软件工程第四次作业(C++)
    248&258--高级软件工程第三次作业
    高级软件工程第二次作业--四则运算生成器
    2017282110258--高级软件工程--齐爽爽第一次作业
    一元多项式求导_9
    成绩排名_8
    写这个数 _7
    我要通过_6
    月饼_5
    Hadoop的读写类调用关系_图示
  • 原文地址:https://www.cnblogs.com/jams742003/p/1599569.html
Copyright © 2020-2023  润新知