根据模式断言 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 测试。
使用 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 测试。