0

我有一个使用 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;
}

我已经在 CXF 本身的 BusinessApplicationContext 和 SpringBusFatory 中的点设置断点,在这些点应该加载配置但它们永远不会被触发。

如果我需要的服务没有身份验证,那么它将起作用,但这只是因为它不需要 cxf.xml 中的任何内容即可运行。

如何让 CXF WebClient 在 JUnit 测试中加载 cxf 属性?

4

1 回答 1

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>
于 2013-11-10T19:27:52.727 回答