首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以将NDbUnit测试数据保存在单独的XML文件中?

是否可以将NDbUnit测试数据保存在单独的XML文件中?
EN

Stack Overflow用户
提问于 2011-05-20 18:08:38
回答 1查看 537关注 0票数 0

我正在考虑使用NDbUnit来帮助进行应用程序的单元测试。正如问题标题所述,我想知道是否可以将NDbUnit测试数据保存在单独的XML文件中。我已经注意到,我的单个测试数据XML文件非常大,当我向其中添加更多实体时,可能会开始变得难以管理。

现在,在阅读了this would之后,这看起来似乎是不可能的,但我只是想确认一下。

如果它有帮助,这是说明问题的示例代码。其想法是,程序与供应商相关联。我设置了包含3个供应商的测试数据,其中第二个供应商有3个程序。TestData.xml包含所有供应商和程序的所有测试数据。当我使用它时,单元测试会像预期的那样通过。如果我尝试使用多个对db.PerformDbOperation(DbOperationFlag.CleanInsertIdentity);的调用来单独读取单个XML文件,那么第二个调用似乎覆盖了第一个调用中所做的一切。

代码语言:javascript
复制
private const string xmlSchema = @"..\..\schema.xsd";
// All of the test data in one file.
private const string xmlData = @"..\..\XML Data\TestData.xml";
// Individual test data files.
private const string vendorData = @"..\..\XML Data\Vendor_TestData.xml";
private const string programData = @"..\..\XML Data\Program_TestData.xml";

public void WorkingExampleTest()
{
    INDbUnitTest db = new SqlDbUnitTest(connectionString);
    db.ReadXmlSchema(xmlSchema);
    db.ReadXml(xmlData);
    db.PerformDbOperation(DbOperationFlag.CleanInsertIdentity);

    VendorCollection vendors = VendorController.List();
    Assert.IsNotNull(vendors);

    ProgramCollection collection = VendorController.GetPrograms(vendors[1].VendorID);
    Assert.IsNotNull(collection);
    Assert.IsTrue(collection.Count == 3);
}

public void NotWorkingExampleTest()
{
    INDbUnitTest db = new SqlDbUnitTest(connectionString);
    db.ReadXmlSchema(xmlSchema);
    db.ReadXml(vendorData);
    db.PerformDbOperation(DbOperationFlag.CleanInsertIdentity);

    db.ReadXml(programData);
    db.PerformDbOperation(DbOperationFlag.CleanInsertIdentity);

    VendorCollection vendors = VendorController.List();
    Assert.IsNotNull(vendors);

    // This line throws an ArgumentOutOfRangeException because there are no vendors in the collection.
    ProgramCollection collection = VendorController.GetPrograms(vendors[1].VendorID);
    Assert.IsNotNull(collection);
    Assert.IsTrue(collection.Count == 3);
}

这是可行的:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-05-22 00:59:00

注意您正在使用的DbOperationFlag值的含义;"CleanInsertIdentity“的”Cleane值“部分表示”在执行流程的插入标识部分之前清除现有记录“。

有关可能的枚举值的更多信息,请参见http://code.google.com/p/ndbunit/source/browse/trunk/NDbUnit.Core/DbOperationFlag.cs

您可以尝试使用Insert或InsertIdentity执行相同的过程,以查看是否可以实现您想要的功能,但CleanInsertIdentity在设计上不适用于此场景:)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6070362

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档