根据模式断言Xml文档,因此文档必须包含所有模式的元素

时间:2016-03-13 11:40:53

标签: .net unit-testing nunit-3.0 xmlunit-2

使用NUnit和XMLUnit.NET
我有两个测试,它根据模式验证生成的Xml文档 第一个测试只需要元素

<Test>
Public Sub GenerateXmlDocument_WithOnlyRequiredElements_SuccesfullyValidated()
    Dim factory As New TestFactory()
    Dim schemaConstraint As SchemaValidConstraint = factory.GreateSchemaConstraint()
    Dim invoice As factory.CreateInvoiceWithOnlyRequiredValues()
    Dim service As New MyService()

    Dim result As XmlDocument = service.GenerateXmlDocument(invoice)
    Dim documentSource As ISource = Input.FromDocument(result).Build()

    Assert.That(documentSource, schemaConstraint)
End Sub

第二次测试所有元素

<Test>
Public Sub GenerateXmlDocument_WithAllElements_SuccesfullyValidated()
    Dim factory As New TestFactory()
    Dim schemaConstraint As SchemaValidConstraint = factory.GreateSchemaConstraint()
    Dim invoice As factory.CreateInvoiceWithAllValues()
    Dim service As New MyService()

    Dim result As XmlDocument = service.GenerateXmlDocument(invoice)
    Dim documentSource As ISource = Input.FromDocument(result).Build()

    Assert.That(documentSource, schemaConstraint)
End Sub

这两项测试几乎涵盖了所有需要的案例,作为元素的类型,顺序和要求 除非架构包含具有minOccurs="0" maxOccurs="1"的元素且在第二个测试(WithAllElements)中生成的Xml文档中缺少该元素的情况。

问题:是否存在可以根据需要处理模式中所有元素的断言/验证方法?

我想在需要添加新元素的情况下这样做。然后使用minOccurs="0"添加新元素,事件将打破测试。

1 个答案:

答案 0 :(得分:0)

Schema在这里并没有真正帮助你,我很害怕。 XMLUnit中没有内置的方法。

您可以针对操作架构进行测试,以自动方式修改所有minOccurs="0" - 或者您可以尝试为可选元素自动创建XPath测试。

相关问题