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

简介: 按Lee的原例实现的测试解决方案。是进行以后各部分学习的基础。 (一)建立Domain类库项目。 这个项目主要用于持久类与嵌入的映射文件的存在库。 还以Customer为例子。 ·数据库中主要的三个字段:customerid,firstname,lastname ·持久类Customer的属性:Unid(这里用Unid,不用与数据库的customerid,主要目的是更好的理解mapping关系);FirstName;LastName ·引用类库:可能会用到Iesi.Collections.dll 这里代码我就不贴了。

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/

转载请注明:博客园

目录
相关文章
|
5月前
|
网络协议 安全 测试技术
性能工具之emqtt-bench BenchMark 测试示例
【4月更文挑战第19天】在前面两篇文章中介绍了emqtt-bench工具和MQTT的入门压测,本文示例 emqtt_bench 对 MQTT Broker 做 Beachmark 测试,让大家对 MQTT消息中间 BenchMark 测试有个整体了解,方便平常在压测工作查阅。
447 7
性能工具之emqtt-bench BenchMark 测试示例
|
5月前
|
JSON 数据可视化 测试技术
性能测试之Artillery(示例及指标)
性能测试之Artillery(示例及指标)
64 2
|
2月前
|
关系型数据库 MySQL OLTP
性能工具之 MySQL OLTP Sysbench BenchMark 测试示例
【8月更文挑战第6天】使用 pt-query-digest 工具分析 MySQL 慢日志性能工具之 MySQL OLTP Sysbench BenchMark 测试示例
191 0
性能工具之 MySQL OLTP Sysbench BenchMark 测试示例
|
3月前
|
测试技术 PHP 开发者
原生php单元测试示例
通过上面的示例,我们可以看到,即使在缺乏专门测试框架的情况下,使用原生PHP代码进行基本的单元测试也是完全可行的。当然,对于更复杂的项目,利用像PHPUnit这样的专业工具将带来更多的便利和高级功能。不过,理解单元测试的基本概念和能够手工编写测试是每个PHP开发者的宝贵技能。
31 4
|
3月前
|
测试技术 PHP 开发者
原生php单元测试示例
通过上面的示例,我们可以看到,即使在缺乏专门测试框架的情况下,使用原生PHP代码进行基本的单元测试也是完全可行的。当然,对于更复杂的项目,利用像PHPUnit这样的专业工具将带来更多的便利和高级功能。不过,理解单元测试的基本概念和能够手工编写测试是每个PHP开发者的宝贵技能。
19 1
|
3月前
|
测试技术 PHP 开发者
原生php单元测试示例
通过上面的示例,我们可以看到,即使在缺乏专门测试框架的情况下,使用原生PHP代码进行基本的单元测试也是完全可行的。当然,对于更复杂的项目,利用像PHPUnit这样的专业工具将带来更多的便利和高级功能。不过,理解单元测试的基本概念和能够手工编写测试是每个PHP开发者的宝贵技能。
18 0
|
5月前
|
消息中间件 监控 固态存储
性能工具之 Kafka 快速 BenchMark 测试示例
【5月更文挑战第24天】性能工具之 Kafka 快速 BenchMark 测试示例
354 1
性能工具之 Kafka 快速 BenchMark 测试示例
|
5月前
|
传感器 数据处理
示例三、光照度测试仪
示例三、光照度测试仪
41 1
|
5月前
|
SQL 测试技术 网络安全
Python之SQLMap:自动SQL注入和渗透测试工具示例详解
Python之SQLMap:自动SQL注入和渗透测试工具示例详解
565 0
|
12月前
|
SQL 测试技术
软件测试|深入理解SQL FULL JOIN:语法、用法及示例解析
软件测试|深入理解SQL FULL JOIN:语法、用法及示例解析
86 0
下一篇
无影云桌面