针对xsd测试Web服务对象

时间:2015-01-16 08:33:48

标签: java web-services

我有一项任务是为Web服务编写测试。但测试只是针对xsd文件验证我们的对象。 测试步骤是: 从我们的xsd创建一个Schema对象。然后从模式中获取验证器并验证我们的对象。 我的问题:

  • 此测试的目的是什么?是为了防止有人改变对象结构?
  • 是否应该以这种方式测试xsd中描述的所有对象?我在尝试测试没有@XmlRootElement注释的对象时,得到了一个javax.xml.bind.MarshalException(无法将类型'classname'作为元素编组,因为它缺少@XmlRootElement注释)。

我在哪里可以阅读更多这些类型的测试以及如何调用它们?

2 个答案:

答案 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 {

}