程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> NDbUnit學習總結

NDbUnit學習總結

編輯:關於.NET

【參考】http://code.google.com/p/ndbunit/wiki/QuickStartGuide

簡介:NDbUnit用於.net的數據庫unit-testing 框架。在測試前和運行測試間將你的數據 庫放進一個已知狀態。

在進行單元測試中集成NDBUnit需要以下幾個步驟:

1,下載NDbUnit.Core.dll 並添加引用到你的項目中

2,創建一個.NET XSD文件(dataset schema definition),並將你數據庫中的表添加進 來

3,在創建一個XML文件,它包含了你要通過NDbUnit加載的數據

4,通過NDbUnit方法控制你在進行測試時的數據庫狀態

示例:

准備:在你的數據庫中創建一個表Customer,腳本如下

CREATE TABLE [dbo].[Customer](
         [CustomerId] [int] IDENTITY(1,1) NOT NULL,
         [Firstname] [varchar](50) NULL,
         [Lastname] [varchar](50) NULL,
  CONSTRAINT [PK_Customer] PRIMARY KEY CLUSTERED
(
         [CustomerId] ASC
)WITH (PAD_INDEX  = OFF,
   STATISTICS_NORECOMPUTE  = OFF,
   IGNORE_DUP_KEY = OFF,
   ALLOW_ROW_LOCKS  = ON,
   ALLOW_PAGE_LOCKS  = ON)
     ON [PRIMARY]
) ON [PRIMARY]

GO

然後進行一下操作:

1,新建工程,並引用NDBUnit.Core.dll

2,新建一個DataSet,命名為MyDataset.xsd,並通過Server Explorer將表Customer拖到 MyDataset中(TableAdapter可以刪除,MyDataset相關的文件,除MyDataset.xsd以外都可以 刪除)。

3,新建一個XML文件,命名為Customer.xml。添加以下內容:

<?xml version="1.0" encoding="utf-8" ?>
<MyDataset xmlns="http://tempuri.org/MyDataset.xsd">
     <Customer>
         <CustomerId>1</CustomerId>
         <Firstname>John</Firstname>
         <Lastname>Doe</Lastname>
     </Customer>
     <Customer>
         <CustomerId>2</CustomerId>
         <Firstname>Sam</Firstname>
         <Lastname>Smith</Lastname>
     </Customer>
     <Customer>
         <CustomerId>3</CustomerId>
         <Firstname>Liu</Firstname>
         <Lastname>RanJun</Lastname>
     </Customer>
</MyDataset>

這時,所有的准備條件都已經准備好了,接下來就可以編寫NDbUnit方法了。

4,先要添加NUnit.Framework.dll類庫,代碼如下:

using System;
using System.Collections.Generic;
using System.Text;
using NUnit.Framework;
using NDbUnit.Core;
namespace NDbUnitDemo
{
    [TestFixture]
    public class Tests
    {
        private string connectionString;
        private NDbUnit.Core.INDbUnitTest mySqlDatabase;
        [TestFixtureSetUp]
        public void TestSetupFixture()
        {
            //初始化
            connectionString = @"Server=LIURJ\MYDATABASE;user=sa;password=sa;initial catalog=demo;";
            mySqlDatabase = new NDbUnit.Core.SqlClient.SqlDbUnitTest(connectionString);
            mySqlDatabase.ReadXmlSchema(@"..\..\MyDataset.xsd");
            mySqlDatabase.ReadXml(@"..\..\bin\debug\testdata.xml");
        }
        [SetUp]
        public void Setup()
        {
            //清除後插入數據
            mySqlDatabase.PerformDbOperation(NDbUnit.Core.DbOperationFlag.CleanInsertIdentity);
        }       
        [Test]
        public void Test()
        {
            //單元測試,判斷數據庫中Customer的記錄數
            CustomerRespository respository = new CustomerRespository();
            Assert.AreEqual(2, respository.GetAllCustomers().Count);   
        }
        [TestFixtureTearDown]
        public void TestFixtureTearDown()
        {
            //刪除數據
            mySqlDatabase.PerformDbOperation(NDbUnit.Core.DbOperationFlag.DeleteAll);
        }
    }
}

就是這樣一個過程,我們在執行單元測試前就先將數據庫恢復到我們預期的那個狀態了。

這樣很好,但是有人就想,數據存放在xml中,如果是手動去編寫的話,對呀數據量很大 就顯得很不現實。

不要擔心,NDbUnit也為我們提供了方法,這樣就很方便的創建出測試數據了。

connectionString =  "server=localhost;user=dbuser;password=dbpassword;initial  catalog=MyDatabase;";

_mySqlDatabase = new NDbUnit.Core.SqlClient.SqlDbUnitTest (_connectionString);

_mySqlDatabase.ReadXmlSchema(@"..\..\MyDataset.xsd");

System.Data.DataSet ds = _mySqlDatabase.GetDataSetFromDb();
ds.WriteXml("TestData.xml");

如果默認情況下,表Customer包含數據的話,通過執行完上面的代碼後,xml文件 TestData.xml就包含了數據庫中表Customer的原有的數據了。

出處:http://www.cnblogs.com/icebutterfly/

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved