NDbUnit 的使用

首先我们需要下载NDbUnit ,然后我们建立一个 Console 项目就可以,导入需要的 dll :

NDbUnit.Core.dll, NDbUnit.Test.dll.

此外我们还需要 NUnit ,也就是 nunit.framework.dll。

相比这下,NUnit 的文档要好得多,有教程,有例子,而 NDbUnit 只有一个简单的教程,
和一个 flash的教程。

NDbUnit 的使用非常简单,难的就是数据文件也就是 xml 文件的制作。如果按照 flash 的教程
中所讲的,用vs 2005 导出就非常方便,可惜现在对vs2005 不太熟悉,没找到这个功能,只好
自己写。建议参考 NDbUnit 自带的 ndbunit-bin-1.2\ndbunit\Xml\UserDS.xsd,这个非常全。

使用方法非常简单,直接看代码吧:

表的xml 文件:

xml 代码
  1. <?xml version="1.0" encoding="utf-8" ?>  
  2. <xs:schema id="Facility" targetNamespace="http://tempuri.org/Facility.xsd" elementFormDefault="qualified"  
  3.         attributeFormDefault="qualified" xmlns="http://tempuri.org/Facility.xsd"  
  4.         xmlns:mstns="http://tempuri.org/Facility.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema"  
  5.         xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">           
  6.         <xs:element name="Facility" msdata:IsDataSet="true">  
  7.                 <xs:complexType>  
  8.                         <xs:choice maxOccurs="unbounded">  
  9.                                 <xs:element name="test_userinfo">  
  10.                                         <xs:complexType>  
  11.                                                 <xs:sequence>  
  12.                                                                 <xs:element name="id" msdata:ReadOnly="true" msdata:AutoIncrement="true" type="xs:int" />  
  13.                                                         <xs:element name="user_name" type="xs:string" />  
  14.                                                         <xs:element name="user_password" type="xs:string" />                                                           
  15.                                                 </xs:sequence>  
  16.                                         </xs:complexType>  
  17.                                 </xs:element>  
  18.                         </xs:choice>  
  19.                 </xs:complexType>  
  20.                 <xs:unique name="test_userinfo_pk1" msdata:PrimaryKey="true">  
  21.                                     <xs:selector xpath=".//mstns:test_userinfo" />  
  22.                                     <xs:field xpath="mstns:ID" />  
  23.                                 </xs:unique>                  
  24.         </xs:element>  
  25. </xs:schema>  

 

表的数据文件:

xml 代码
  1. <?xml version="1.0" encoding="utf-8" ?>    
  2. <FacilityTestDS xmlns="http://tempuri.org/Facility.xsd">  
  3.   <test_userinfo>  
  4.     <id>1</id>  
  5.     <user_name>tom</user_name>  
  6.     <user_password>12345</user_password>       
  7.   </test_userinfo>  
  8. </FacilityTestDS>  

表的创建语句:

sql 代码
  1. if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[test_userinfo]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)   
  2. drop table [dbo].[test_userinfo]   
  3. GO   
  4.   
  5. CREATE TABLE [dbo].[test_userinfo] (   
  6.     [id] [int] IDENTITY (1, 1) NOT NULL ,   
  7.     [user_name] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,   
  8.     [user_password] [varchar] (100) COLLATE Chinese_PRC_CI_AS NOT NULL    
  9. ON [PRIMARY]   
  10. GO   
  11.   
  12. ALTER TABLE [dbo].[test_userinfo] ADD    
  13.     CONSTRAINT [PK_test_userinfo] PRIMARY KEY  CLUSTERED    
  14.     (   
  15.         [id]   
  16.     )  ON [PRIMARY]    
  17. GO  
c# 代码
  1. using System;   
  2. using System.Collections.Generic;   
  3. using System.Text;   
  4.   
  5. namespace NDBUtilSample.TestSample   
  6. {   
  7.   
  8.     using NUnit.Framework;   
  9.     using NDbUnit.Test;   
  10.     using NDbUnit.Core;   
  11.     using NDbUnit.Core.OleDb;   
  12.     using System.Data;   
  13.     using System.Data.OleDb;   
  14.   
  15.     [TestFixture]   
  16.     [Category("Component")]   
  17.     public class TestSample   
  18.     {   
  19.   
  20.         public static void Main()    
  21.         {   
  22.   
  23.         }   
  24.   
  25.         private const string CONN = @"Provider=SQLOLEDB;Data Source=127.0.0.1;Persist Security Info=True;User ID=sa;Password=1;Initial Catalog=Northwind";   
  26.         private const string SCHEMA = @"E:\c#_test\test3_NDBUnit\NDBUtilSample.TestSample\NDBUtilSample.TestSample\db_schema.xml";   
  27.         private const string DATA_SET = @"E:\c#_test\test3_NDBUnit\NDBUtilSample.TestSample\NDBUtilSample.TestSample\data_set.xml";   
  28.   
  29.         private OleDbUnitTest testFixtures;   
  30.   
  31.         [SetUp]   
  32.         public void SetUp()   
  33.         {   
  34.   
  35.             testFixtures = new OleDbUnitTest(CONN);   
  36.             testFixtures.ReadXmlSchema(SCHEMA);   
  37.             testFixtures.ReadXml(DATA_SET);   
  38.   
  39.   
  40.   
  41.         }   
  42.   
  43.         [TearDown]   
  44.         public void TearDown()   
  45.         {   
  46.             testFixtures.PerformDbOperation(DbOperationFlag.DeleteAll);   
  47.         }   
  48.   
  49.         [Test]   
  50.         public void testInsert()   
  51.         {   
  52.                
  53.                
  54.             testFixtures.PerformDbOperation(DbOperationFlag.CleanInsert);   
  55.   
  56.             string select = "select user_name from test_userinfo";   
  57.   
  58.             OleDbDataAdapter adapter = new OleDbDataAdapter(select, CONN);   
  59.   
  60.             DataSet ds = new DataSet();   
  61.             adapter.Fill(ds);   
  62.             DataTable table = ds.Tables[0];   
  63.               
  64.             Assert.IsNotNull(table);   
  65.   
  66.             foreach (DataRow row in table.Rows) {   
  67.   
  68.                 Assert.IsNotNull(row[0]);   
  69.                    
  70.             }   
  71.                
  72.   
  73.         }   
  74.   
  75.   
  76.     }   
  77. }   

然后用 NUnit 测试就可以了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值