为什么在JUnit测试中使用WebClient时不加载cxf.xml

时间:2013-09-27 11:34:02

标签: java rest junit cxf webclient

我有一个使用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属性?

1 个答案:

答案 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>