首先我们需要下载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 代码
- <?xml version="1.0" encoding="utf-8" ?>
- <xs:schema id="Facility" targetNamespace="http://tempuri.org/Facility.xsd" elementFormDefault="qualified"
- attributeFormDefault="qualified" xmlns="http://tempuri.org/Facility.xsd"
- xmlns:mstns="http://tempuri.org/Facility.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema"
- xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
- <xs:element name="Facility" msdata:IsDataSet="true">
- <xs:complexType>
- <xs:choice maxOccurs="unbounded">
- <xs:element name="test_userinfo">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="id" msdata:ReadOnly="true" msdata:AutoIncrement="true" type="xs:int" />
- <xs:element name="user_name" type="xs:string" />
- <xs:element name="user_password" type="xs:string" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- </xs:choice>
- </xs:complexType>
- <xs:unique name="test_userinfo_pk1" msdata:PrimaryKey="true">
- <xs:selector xpath=".//mstns:test_userinfo" />
- <xs:field xpath="mstns:ID" />
- </xs:unique>
- </xs:element>
- </xs:schema>
表的数据文件:
xml 代码
- <?xml version="1.0" encoding="utf-8" ?>
- <FacilityTestDS xmlns="http://tempuri.org/Facility.xsd">
- <test_userinfo>
- <id>1</id>
- <user_name>tom</user_name>
- <user_password>12345</user_password>
- </test_userinfo>
- </FacilityTestDS>
表的创建语句:
sql 代码
- if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[test_userinfo]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
- drop table [dbo].[test_userinfo]
- GO
- CREATE TABLE [dbo].[test_userinfo] (
- [id] [int] IDENTITY (1, 1) NOT NULL ,
- [user_name] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
- [user_password] [varchar] (100) COLLATE Chinese_PRC_CI_AS NOT NULL
- ) ON [PRIMARY]
- GO
- ALTER TABLE [dbo].[test_userinfo] ADD
- CONSTRAINT [PK_test_userinfo] PRIMARY KEY CLUSTERED
- (
- [id]
- ) ON [PRIMARY]
- GO
c# 代码
- using System;
- using System.Collections.Generic;
- using System.Text;
- namespace NDBUtilSample.TestSample
- {
- using NUnit.Framework;
- using NDbUnit.Test;
- using NDbUnit.Core;
- using NDbUnit.Core.OleDb;
- using System.Data;
- using System.Data.OleDb;
- [TestFixture]
- [Category("Component")]
- public class TestSample
- {
- public static void Main()
- {
- }
- private const string CONN = @"Provider=SQLOLEDB;Data Source=127.0.0.1;Persist Security Info=True;User ID=sa;Password=1;Initial Catalog=Northwind";
- private const string SCHEMA = @"E:\c#_test\test3_NDBUnit\NDBUtilSample.TestSample\NDBUtilSample.TestSample\db_schema.xml";
- private const string DATA_SET = @"E:\c#_test\test3_NDBUnit\NDBUtilSample.TestSample\NDBUtilSample.TestSample\data_set.xml";
- private OleDbUnitTest testFixtures;
- [SetUp]
- public void SetUp()
- {
- testFixtures = new OleDbUnitTest(CONN);
- testFixtures.ReadXmlSchema(SCHEMA);
- testFixtures.ReadXml(DATA_SET);
- }
- [TearDown]
- public void TearDown()
- {
- testFixtures.PerformDbOperation(DbOperationFlag.DeleteAll);
- }
- [Test]
- public void testInsert()
- {
- testFixtures.PerformDbOperation(DbOperationFlag.CleanInsert);
- string select = "select user_name from test_userinfo";
- OleDbDataAdapter adapter = new OleDbDataAdapter(select, CONN);
- DataSet ds = new DataSet();
- adapter.Fill(ds);
- DataTable table = ds.Tables[0];
- Assert.IsNotNull(table);
- foreach (DataRow row in table.Rows) {
- Assert.IsNotNull(row[0]);
- }
- }
- }
- }
然后用 NUnit 测试就可以了。