利用Nunit进行单元测试 NHibernate在SQL server中建表

今天试了下vs里安装的Nunit进行单元测试。感觉不错。上货

开发环境:VS2015、SQL server 2012、NHibernate 3.3.3 ,NUnit 2.6.2,NUnit.Runners.2.6.2

所以为什么会有NHibernate呢? 最近在研究这玩意嘛。没办法。就拿他来做个简单的单元测试,Nunit也是在vs中使用Nuget包安装的。

这是整个解决方案的结构图-------

利用Nunit进行单元测试 NHibernate在SQL server中建表_第1张图片

1.先配置下NHibernate吧

  1.   打开vs,新建项目,选择类库,命名Domain;
  2.   在其中添加Student.cs 实体类。代码如下:

namespace Domain
{
    
        /// <summary>  
        /// 学生类  
        /// </summary>  
        public class Student
        {
            /// <summary>  
            /// ID  
            /// </summary>  
            public virtual int ID { get; set; }
            /// <summary>  
            /// 学生姓名  
            /// </summary>  
            public virtual string Name { get; set; }
            /// <summary>  
            /// 学生性别  
            /// </summary>  
            public virtual string Sex { get; set; }
            /// <summary>  
            /// 学生年龄  
            /// </summary>  
            public virtual int Age { get; set; }
        }

    
      3.添加一个XML文件,取名为:Student.hbm.xml;代码如下:

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="Domain" namespace="Domain">
   <class name="Student" table="T_Student" lazy="true">
     <id name="ID" column="ID" unsaved-value="0">
        <generator class="native"></generator>
     
    </id>
       <property name="Name" type="string" column="StuName" length="20" not-null="true"></property>
       <property name="Sex" type="string" column="StuSex" length="2"></property>
      <property name="Age" type="Int32" column="StuAge"></property>
    
  </class>

</hibernate-mapping>
  在Student.hbm.xml 文件上右击,选择”属性“,将xml文件的生成操作属性由”内容“改为”嵌入的资源“。如下图:


   4.此时,我们右键选择解决方案,创建一个新的类库,取名为:NHibernateTest。

      此时我们要对NHibernateTest这个新的类库,添加一些引用。

      首先右键NHibernateTest,选择Nuget管理。搜索NHibernate 3.3.3 ,NUnit 2.6.2,NUnit.Runners.2.6.2进行安装。

      安装完成后,我们需要对刚才完成的Domain类库进行引用。

      这样才算大功告成。

     5.添加一个xml文件,名为hibernate.cfg.xml,代码如下:

<?xml version="1.0" encoding="utf-8"?>
<!--   
This template was written to work with NHibernate.Test.  
Copy the template to your NHibernate.Test project folder and rename it in hibernate.cfg.xml and change it   
for your own use before compile tests in VisualStudio.  
.-->
<!-- This is the System.Data.dll provider for SQL Server -->
<hibernate-configuration  xmlns="urn:nhibernate-configuration-2.2" >
   <session-factory name="NHibernate.Test">
       <property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>
          <property name="connection.connection_string">
            <!-- server后面写的是sqlserver服务器的名称,本地服务器默认计算机名\SQLEXPRESS;uid是登陆数据库用的管理员名称;pwd是密码;database是要连接的数据库-->
            server=VS\SQLEXPRESS;uid=sa;pwd=!QAZ2wsx;database=nhibernate;
          </property>
          <property name="dialect">NHibernate.Dialect.MsSql2008Dialect</property>
       <!--添加下面这行代码,除此之外,其它都不用改动,当然,你也可以修改上面的数据库链接字符串-->
       <mapping assembly="Domain"/>
   
  </session-factory>

</hibernate-configuration>
    6.最后,也是最关键的。添加一个NHibernateTest.cs类,来测试我们的Nhibernate是否连接到数据库,并创建表。代码如下:

using System;  
using System.Collections.Generic;  
using System.Linq;  
using System.Text;  
using System.Threading.Tasks;  
using NHibernate;  
using NHibernate.Tool.hbm2ddl;  
using NUnit.Framework;  
  
namespace NHibernateTest
{  
    [TestFixture]  
    public class NHibernateInit
    {  
        [Test]  
        public void InitTest()
        {  
            var cfg = new NHibernate.Cfg.Configuration().Configure(System.AppDomain.CurrentDomain.BaseDirectory + "\\hibernate.cfg.xml");  
            new SchemaExport(cfg).Execute(true, true, false);  
            using (ISessionFactory sessionFactory = cfg.BuildSessionFactory()) { }  
        }  
    }  
}  
7.用SQL server创建一个数据库nhibernate。


测试开始:

  1. 右键NHibernateTest项目,选择属性;
  2. 选择启动外部程序。
  3. 如下图所示,找到文件夹中的nunit.exe.


      

点击一下”全部保存“,然后在整个的项目解决方案上右键,选择”生成解决方案“。然后,将NHibernateTest 类库右键,设为启动项目。F5,运行程序

此时,我们看到NUnit.exe已经启动了,在NUnit窗口中,选择:"File"->”new project“,文件名为:NHibernateTest.nunit,点击保存。此时,窗口依然什么都没有。再选择:"Project"->"Add assembly",在弹出的对话框中,找到我们的NHibernateTest类库生成的dll文件,点击打开,如下图:


最后,点击run,就大功告成!!!!

利用Nunit进行单元测试 NHibernate在SQL server中建表_第2张图片

此刻检查数据库,发现Student表已建立。(其实根据图中的代码语句也可以看出。)


PS 如果:出现红色,表示fail。可以根据下面的提示信息寻找一下原因。


你可能感兴趣的:(.net,单元测试,C#,NUnit,NHibernate)