使用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"
添加新元素,事件将打破测试。
答案 0 :(得分:0)
Schema在这里并没有真正帮助你,我很害怕。 XMLUnit中没有内置的方法。
您可以针对操作架构进行测试,以自动方式修改所有minOccurs="0"
- 或者您可以尝试为可选元素自动创建XPath测试。