程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> XFire Web服務的單元測試

XFire Web服務的單元測試

編輯:關於JAVA

你不必發布到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文檔是否和預期一致。

更詳細的內容可以查看AbstractXFireTest的API。

在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"});

}

}

Trackback: http://tb.blog.csdn.Net/TrackBack.ASPx?PostId=674611

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved