针对 xsd 测试 Web 服务对象
Testing web service objects against xsd
我的任务是为 Web 服务编写测试。但测试只是为了根据 xsd 文件验证我们的对象。
测试步骤为:
从我们的 xsd 创建一个 Schema 对象。然后从模式中获取验证器并根据它验证我们的对象。
我的问题:
- 这个测试的目的是什么?是为了防止有人更改对象结构吗?
- xsd 中描述的所有对象都应该这样测试吗?在尝试测试没有
@XmlRootElement
注释的对象时,我得到一个 javax.xml.bind.MarshalException(无法将类型 'classname' 编组为元素,因为它缺少 @XmlRootElement
注释)。
我在哪里可以阅读更多这些类型的测试以及它们是如何命名的?
我认为 IT 比 UT 更适合测试 Web 服务。
您可以使用 SOAPUI 或 Robot Framework 等 IT 框架来实现。
关于缺少@XmlRootElement 的问题。您可以使用 @XmlRootElement 创建一个 class 并扩展到您要测试的 class,然后在此 class.
上进行编组
@XmlRootElement
public class ClassRoot extends ClassYouWantTest {
}
一种测试方法是使用 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 数据传递给验证。
我的任务是为 Web 服务编写测试。但测试只是为了根据 xsd 文件验证我们的对象。 测试步骤为: 从我们的 xsd 创建一个 Schema 对象。然后从模式中获取验证器并根据它验证我们的对象。 我的问题:
- 这个测试的目的是什么?是为了防止有人更改对象结构吗?
- xsd 中描述的所有对象都应该这样测试吗?在尝试测试没有
@XmlRootElement
注释的对象时,我得到一个 javax.xml.bind.MarshalException(无法将类型 'classname' 编组为元素,因为它缺少@XmlRootElement
注释)。
我在哪里可以阅读更多这些类型的测试以及它们是如何命名的?
我认为 IT 比 UT 更适合测试 Web 服务。 您可以使用 SOAPUI 或 Robot Framework 等 IT 框架来实现。
关于缺少@XmlRootElement 的问题。您可以使用 @XmlRootElement 创建一个 class 并扩展到您要测试的 class,然后在此 class.
上进行编组@XmlRootElement
public class ClassRoot extends ClassYouWantTest {
}
一种测试方法是使用 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 数据传递给验证。