Eclipse:JerseyTest.getClient返回RestEasyClient

时间:2018-01-19 08:38:58

标签: java eclipse junit jersey resteasy

我有一个包含jersey-clientresteasyclient库的项目。这有历史原因,因为我必须在执行目标方法时包含resteasyclient,junit-tests返回jersey-test.getClient() resteasyclient,我得"RESTEASY004655 Unable to invoke the request"。 当我手动排除resteasyclient.jar时,它可以正常工作。

有没有办法在eclipse中测试时排除库?

1 个答案:

答案 0 :(得分:1)

是的,它很疯狂。这就是JAX-RS ClientBuilder的设计方法 1 ;类路径上的其他ClientBuilder优先于Jersey ClientBuilder。仅当您使用标准JAX-RS ClientBuilder时才会出现这种情况,这是JerseyTest所做的。

但是每个实现都带有自己的ClientBuilder实现。例如,泽西岛附带JerseyClientBuilder。如果你想使用它,那么你可以。

Client client = JerseyClientBuilder.createClient();
if (client instance JerseyClient) {
   System.out.println("Hip hip hooray!");
}

使用JerseyTest时,它可以覆盖使用的默认客户端。

@Override
public Client getClient() {
    return JerseyClientBuilder.createClient();
}

有几点需要注意:

  1. 如果您在configureClient覆盖JerseyTest,则无法正常工作。您只需要使用getClient()方法配置客户端。

  2. 可能最重要的是它不能与内存测试提供商合作。使用内存中测试提供程序时,客户端配置了一个特殊的内存连接器。如果要覆盖客户端,则应使用"真实服务器"测试提供者,就像grizzly2一样。

  3. 1 - 如果您想了解详细信息,请查看ClientBuilder的来源及其使用的FactoryFinder