加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

[webservices开发]XFire Web服务的单元测试

发布时间:2020-12-17 02:56:28 所属栏目:安全 来源:网络整理
导读:你不必发布到 tomcat 等容器中就可以进行测试,常用的测试类常继承 AbstractXFireSpringTest 抽象类。 AbstractXFireSpringTest 类又实现了 AbstractXFireTest 类, AbstractXFireTest 类是 TestCase 的子类,所以你可以使用 junit 进行单元测试。 ? 下面看

你不必发布到tomcat等容器中就可以进行测试,常用的测试类常继承AbstractXFireSpringTest 抽象类。AbstractXFireSpringTest 类又实现了AbstractXFireTest 类,AbstractXFireTest 类是TestCase的子类,所以你可以使用junit进行单元测试。

?

下面看一个例子:

package com.kuaff.xfire.samples;

?

import java.net.URL;

?

import org.apache.xbean.spring.context.ClassPathXmlApplicationContext;

import org.codehaus.xfire.client.Client;

import org.codehaus.xfire.service.Endpoint;

import org.codehaus.xfire.spring.AbstractXFireSpringTest;

import org.jdom.Document;

import org.springframework.context.ApplicationContext;

?

public class MathClientTest extends AbstractXFireSpringTest

{

??? public void testService() throws Exception

??? {

??????? Document wsdl = getWSDLDocument("MathService");

??????? printNode(wsdl);

??? }

???

???????

??? protected ApplicationContext createContext()

??? {

??????? return new ClassPathXmlApplicationContext(new String[] {

?????????? "/org/codehaus/xfire/spring/xfire.xml",

?????????? "/META-INF/xfire/services.xml"

??????? });

??? }

}

?

?

你必须实现createContext方法,这个方法将得到应用上下文。在这个例子中返回了一个ClassPathXmlApplicationContext上下文,它通过类路径的下配置文件生成这个上下文对象。

剩下的工具就是写单元测试的方法,和junit的方式一样。getWSDLDocument方法可以获取指定Web服务的WSDL文档。如果你要测试发布的服务,还可以通过

invokeService方法测试:

Document response = invokeService("MathService","Add.xml");

?

??????? addNamespace("k","http://www.kuaff.com/xfire/mathservice");

??????? assertValid("//soap:Body/k:addResponse",response);

??????? printNode(response);

?

通过assertValid方法可以通过Xpath查询的方式验证返回的xml文档是否和预期一致。

更详细的内容可以查看AbstractXFireTestAPI

?

SpringSide这个开源项目中做了一个Web服务,它的单元测试代码如下:

package org.springside.bookstore.service;

import … …

?

public class XFireTest extends AbstractXFireSpringTest {

?

??? protected final Log log = LogFactory.getLog(getClass());

?

??? public void setUp() throws Exception {

??????? super.setUp();

??? }

?

??? public void testGetWsdl() throws Exception {

??????? Document doc = getWSDLDocument("BookService");

??????? assertValid("//xsd:complexType[@name=/"Book/"]",doc);

??????? assertValid("//xsd:complexType[@name=/"Category/"]",doc);

??? }

?

??? protected ApplicationContext createContext() {

?????? ?return new ClassPathXmlApplicationContext(new String[]{"classpath*:applicationContext*.xml"});

??? }

}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读