Утвердить XML-документ по схеме, поэтому документ должен содержать все элементы схемы
Использование 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"
и этот элемент отсутствует в документе XML, созданном во втором тесте (WithAllElements).
Вопрос: существует ли метод assert/validate, который может обрабатывать все элементы в схеме как требуется?
Я хочу это для ситуации, когда нужно добавить новый элемент. Затем добавление нового элемента, событие с minOccurs="0"
сломаю тест.
1 ответ
Боюсь, схема здесь тебе не поможет. И в XMLUnit нет встроенного способа.
Вы можете проверить схему, в которой вы изменили все minOccurs="0"
в автоматическом режиме - или вы можете попытаться автоматически создать XPath-тесты для ваших дополнительных элементов.