我有一个使用Spring和CXF REST Web服务的应用程序,一切都很愉快,但我正在为REST Web服务编写JUnit测试,并发现cxf.xml文件从未加载,这是一个问题,因为我们用它来验证数据。
JUnit测试根本不使用Spring,它们只是简单的bean测试,使用一些简单的代码调用客户端,如下所示....
public static <RQ, RS> RS callXMLService(RQ request, String host, String path, Class<RS> responseClass)
{
WebClient client = WebClient.create(host);
client.path(path);
client.type("application/xml");
client.accept("text/xml");
RS response = client.post(request, responseClass);
int status = client.getResponse().getStatus();
if (status == 200)
{
return response;
}
return null;
}
我已经在BusinessApplicationContext和SpringBusFatory中的点处设置了CXF中的断点,其中应该加载配置但是它们永远不会被触发。
如果我需要的服务没有身份验证,那么它就可以工作,但这只是因为它不需要从cxf.xml运行任何东西。
如何让CXF WebClient在JUnit测试中加载cxf属性?
答案 0 :(得分:0)
我认为我遇到了同样的问题,将cxf.xml文件放在类路径的根目录中,但它没有加载,并且从未应用过所需的设置。
在我添加spring-context作为依赖之后,我终于让它工作了。见http://cxf.apache.org/docs/configuration.html
注意从CXF 2.6.0开始,Maven用户需要为要读取的cxf.xml文件添加以下依赖项:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>3.0.6.RELEASE</version> (or most recent supported)
</dependency>