我有一项任务是为Web服务编写测试。但测试只是针对xsd文件验证我们的对象。 测试步骤是: 从我们的xsd创建一个Schema对象。然后从模式中获取验证器并验证我们的对象。 我的问题:
@XmlRootElement
注释的对象时,得到了一个javax.xml.bind.MarshalException(无法将类型'classname'作为元素编组,因为它缺少@XmlRootElement
注释)。 我在哪里可以阅读更多这些类型的测试以及如何调用它们?
答案 0 :(得分:1)
测试的一种方法是使用表示整个服务有效负载的XML文件。然后,在这里和那里随处更改XML错误并验证每个变体。
另一种方法是创建子元素并使用
封送它们<T> JAXBElement<T> wrap( String ns, String tag, T o ){
QName qtag = new QName( ns, tag );
Class<?> clazz = o.getClass();
@SuppressWarnings( "unchecked" )
JAXBElement<T> jbe = new JAXBElement( qtag, clazz, o );
return jbe;
}
JAXBElement<Foo> jbe = wrap( "/some/ns", "aFoo", new Foo() );
m.marshal( jbe,... );
并将生成的XML数据传递给验证。
答案 1 :(得分:0)
我认为IT比UT更好地测试Web服务。 您可以使用某些IT框架(如SOAPUI或Robot Framework)来实现该目标。
缺少@XmlRootElement问题。您可以使用@XmlRootElement创建一个类并扩展到要测试的类,并对此类进行编组。
@XmlRootElement
public class ClassRoot extends ClassYouWantTest {
}