2011-05-01 48 views
0

我正在嘗試使用NDbUnit。我爲每個表創建了單獨的XSD,而不是完整的數據庫的一個大型XSD。在單個測試中讀取/加載多個XML使用NDbUnit初始化

我的測試運行良好,當我只使用單個XSD和單獨的XML讀取。然而,對於一個細微的測試,我需要在兩個或三個不同的(但相關的)表中有數據。如果我嘗試讀取多個xsd和xml,則會拋出異常。

這裏是我的代碼

 [ClassInitialize()] 
     public static void MyClassInitialize(TestContext testContext) 
     { 
      IDbConnection connection = DbConnection.GetCurrentDbConnection(); 
      _mySqlDatabase = new NDbUnit.Core.SqlClient.SqlDbUnitTest(connection); 
      _mySqlDatabase.ReadXmlSchema(@"Data\CompanyMaster.xsd"); 
      _mySqlDatabase.ReadXml(@"Data\CompanyMaster.xml"); 
      _mySqlDatabase.ReadXmlSchema(@"Data\License.xsd"); 
      _mySqlDatabase.ReadXml(@"Data\License.xml"); 
      _mySqlDatabase.ReadXmlSchema(@"Data\LicenseDetails.xsd"); 
      _mySqlDatabase.ReadXml(@"Data\LicenseDetails.xml"); 
      _mySqlDatabase.ReadXmlSchema(@"RelatedLicense.xsd"); 
      _mySqlDatabase.ReadXml(@"Data\RelatedLicense.xml");  
     } 

這裏是例外,我在那裏我嘗試閱讀License.XSD如上圖所示

類初始化方法 ESMS.UnitTest.CompanyManagerTest點得到.MyClassInitialize 引發異常。 System.ArgumentException: System.ArgumentException:已添加項目 。鍵入字典: 'EnableTableAdapterManager'鍵爲 添加:'EnableTableAdapterManager'。

我不確定這是不是讀取多個XML,XSD與NDbUnit的正確方法。我谷歌搜索和溢出(即搜索堆棧溢出),但無法得到任何明智的方向。有人可以解釋發生了什麼問題以及如何糾正?

回答

2

Sbohlen指示我。

確實,現在的情況並非如此,加載多個XSD是不受支持的。

然而幸運的是,可能會針對單個XSD加載多個XML。

所以我做了什麼創建了一個單一的XSD,並將所有相關的表中拉到它。然後使用ReadXml旁邊的AppendXml sytanx。這樣我可以將所需的測試數據加載到多個表中,並且我的測試開始順利通過。

這個鏈接會分享更多關於燈光的AppendXmlhttp://code.google.com/p/ndbunit/issues/detail?id=27

+0

真棒!我只想指出,有一種選擇 - 即每次需要讀取新的XSD時創建一個新的「INDbUnit」。 – stephen 2014-12-03 19:11:18

2

這不是NDBUnit如何使用。不支持將多個XSD或XML文件讀入單個測試範圍。 NDbUnit使用單個XSD中的信息來分析表之間的關係(FK等),以便能夠在CRUD操作期間正確操作表,並且要求單個XSD描述表的整個範圍您希望NDbUnit在測試運行期間進行操作。

可能可以加載多個XML文件(包含您的測試數據),但這不是測試/支持的方案。我有興趣瞭解你有哪些使用場景會阻止只有一個XML文件與你需要的測試數據。

但它的肯定一次只能加載一個單獨的XSD文件(包含一個或多個表及其關係的模式等)的情況。

希望這個清楚了一點。

相關問題