2

刚刚使用 CXF 实现了 SOAP Web 服务。使用模拟框架编写一些单元测试对我来说很容易。但不太确定为我的 Web 服务编写一些集成测试的最佳方法是什么。实现是这样的:

@Autowired
private InvoiceService invoiceService;

@Webservice(endpointinterface="xxx") 
public Invoice retrieveInvoiceById(String id) {
    Invoice invoice = invoiceService.getInvoiceById(id);
    return invoice;
}

InvoiceService 将调用该方法从文本文件或某些文件系统中检索发票,然后返回。那么我应该如何编写集成测试来测试整体呢?

多谢你们。

4

1 回答 1

1

编写您的单元测试,以便实际测试将启动 Jetty 服务器并在测试运行期间将您的 Web 服务公开为真实端点。如果您使用任何数据库,请使用 Derby 或其他支持内存功能的数据库。

例如,只需在测试上下文 spring 文件中声明您的端点:

<jaxws:endpoint id="someProxy"
                implementor="#yourWebServiceImplBean"
                wsdlLocation="src/main/webapp/WEB-INF/wsdl/InvoiceService.wsdl"
                address="http://0.0.0.0:12345/YourService/services/InvoiceService"/>

这足以启动 Jetty 实例并公开您的 Web 服务。这将在端口上启动 Jetty 实例:12345。将此 bean 自动装配到您的测试类中,您就可以调用方法了。

您还需要包含此依赖项才能在单元测试中运行 Jetty。

<dependency>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-rt-transports-http-jetty</artifactId>
    <version>${cxf.version}</version>
    <scope>test</scope>
</dependency>
于 2013-08-14T12:46:32.300 回答