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

Assert Xml document against schema, so document must contains all schema's elements

使用 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 文档中缺失的情况除外。

问题:是否有assert/validate方法可以按要求处理schema中的所有元素?

我想要这个用于需要添加新元素的情况。然后添加新元素,带有 minOccurs="0" 的事件将中断测试。

恐怕 Schema 在这里并不能真正帮助你。并且XMLUnit中没有内置方式。

您可以针对一个被操纵的模式进行测试,在该模式中您以自动方式修改所有 minOccurs="0" - 或者您可以尝试为您的可选元素自动创建 XPath 测试。