你不必發布到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