我正在尝试使用NDbUnit。我为每个表创建了单独的XSD,而不是为完整的数据库创建一个大型XSD。
当我只使用单个XSD和singe读取时,我的测试运行良好。但是对于perticular测试,我需要在两个或三个不同的(但相关的)表中有数据。如果我尝试读取多个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: Item已经添加。字典中的键:'EnableTableAdapterManager‘键被添加:'EnableTableAdapterManager’。
我不确定这是否是用NDbUnit读取多个XML、XSD的正确方法。我googled和溢出(即搜索堆栈溢出),但无法获得任何合理的方向。有人能解释一下哪里出了问题以及如何纠正吗?
发布于 2011-05-09 15:47:03
斯波伦给我指明了方向。
事实上,目前为止,不支持加载多个XSD。
然而,幸运的是,可以在单个XSD上加载多个XML。
因此,我所做的就是创建一个XSD,并将所有相关的表放入其中。然后使用AppendXml sytanx在ReadXml旁边可用。这样,我就可以将所需的测试数据加载到多个表中,并开始通过测试。
此链接将共享更多关于AppendXml http://code.google.com/p/ndbunit/issues/detail?id=27的灯光。
发布于 2011-05-02 11:33:40
这不是打算使用NDbUnit的方式。不支持将多个XSD或XML文件读入单个测试范围。NDbUnit使用单个XSD中的信息来分析关系(FKs等)为了能够在CRUD操作期间正确地操作表,需要单个XSD描述您希望NDbUnit在测试运行期间操作的整个表的范围。
可以加载多个XML文件(包含测试数据),但这不是经过测试/支持的场景。我有兴趣了解您有哪些使用场景,这将排除只使用一个XML文件和所需的测试数据。
但是确实是这样的,只有一个XSD文件(包含一个或多个表的模式及其关系等等)。一次可以装载。
希望这能把这件事弄清楚。
https://stackoverflow.com/questions/5849873
复制相似问题