您可以檢查scalaxb生成的case類和typeclass實例的有效性的方法之一是執行往返。這並不完美,但它應該測試類的一致性。
例如,您可以從XML文檔開始,將其解析爲一個案例類,然後再次將其重新轉換爲XML文檔。爲此你需要定義一個覆蓋各種場景的生成器。
或者,換一種方式,從任意大小寫的類開始,將它們轉換爲XML文檔,並將其解析爲大小寫類。我認爲這將是更簡單的定義一樣The arbitrary Generator例子案例類發生器:
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文檔已經存在。