Объединение scalaxb с scalacheck

Интересно, как я мог бы использовать scalacheck для типов, генерируемых scalaxb, происходящих из сложных xsds, таких как этот:

http://wiki.xmldation.com/@api/deki/files/379/=pain.001.001.03.xsd

Фактические документы напоминают платежи, и я хочу ограничить тестовые данные тем или иным способом (владельцы счетов / номера, суммы, страны).

фактические компоненты для тестирования: xml-парсеры, проверяющие синтаксис и выдающие сообщения об ошибках, xml-парсеры, анализирующие документы в виде структуры данных, похожей на запись, xml-принтеры, пишущие такие документы.

Будет ли это возможно?

1 ответ

Решение

Один из способов проверить правильность сгенерированных скалаксбом классов случаев и экземпляров классов типов - это выполнить "туда-обратно". Это не идеально, но это должно проверить согласованность классов.

Например, вы можете начать с XML-документа, проанализировать его в классе дел и снова включить его в XML-документ. Для этого вам нужно определить генератор, охватывающий различные сценарии.

Или пойти другим путем, начать с произвольных классов дел, преобразовать их в документы XML и проанализировать их обратно в классы дел. Я думаю, что было бы проще определить генераторы класса дел, например, произвольные примеры генератора:

implicit lazy val arbBool: Arbitrary[Boolean] = Arbitrary(oneOf(true, false))

Например, Arbitrary экземпляр для следующего AddressType2Code может быть определен таким же образом.

<xs:simpleType name="AddressType2Code">
  <xs:restriction base="xs:string">
    <xs:enumeration value="ADDR"/>
    <xs:enumeration value="PBOX"/>
    <xs:enumeration value="HOME"/>
    <xs:enumeration value="BIZZ"/>
    <xs:enumeration value="MLTO"/>
    <xs:enumeration value="DLVY"/>
  </xs:restriction>
</xs:simpleType>

Используя их в качестве строительных блоков, Arbitrary Экземпляр для сложного типа может быть построен как implicit def arbTree[T],

Преимущество наличия Arbitrary В некоторых случаях вы можете приступить к тестированию кода бизнес-логики с ним, делая вид, что документ XML уже существует.

Другие вопросы по тегам