0

使用 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"将打破测试。

4

1 回答 1

0

恐怕架构在这里并不能真正帮助你。XMLUnit 中没有内置方法。

您可能会针对以minOccurs="0"自动方式修改所有内容的操作模式进行测试 - 或者您可以尝试为您的可选元素自动创建 XPath 测试。

于 2016-03-14T05:34:17.497 回答