gpt4 book ai didi

java - Eclipse:JerseyTest.getClient 返回 RestEasyClient

转载 作者:行者123 更新时间:2023-11-30 06:20:05 24 4
gpt4 key购买 nike

我有一个项目,其中 jersey-clientresteasyclient包括图书馆。这是有历史原因的,因为我必须包括resteasyclient,我的junit-tests返回jersey-test.getClient() resteasyclient我得到"RESTEASY004655 Unable to invoke the request" ,当执行目标方法时。当我手动排除resteasyclient.jar时,它有效。

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

最佳答案

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

但是每个实现都有自己的 ClientBuilder 实现。例如,Jersey 带有 JerseyClientBuilder 。如果您想使用它,那么您可以。

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

使用JerseyTest时,它使您能够覆盖所使用的默认客户端。

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

对此需要注意的几点:

  1. 如果您在 JerseyTest 中覆盖 configureClient,它将不起作用。您只需在 getClient() 方法中配置客户端即可。

  2. 最重要的可能是它无法与内存测试提供程序一起使用。当使用内存测试提供程序时,客户端配置有一个特殊的内存连接器。如果您想覆盖客户端,那么您应该使用“真实服务器”测试提供程序,例如 grizzly2。

<小时/>

1 - 如果您想了解详细信息,请查看 ClientBuilder 的源代码和 FactoryFinder它使用的。

关于java - Eclipse:JerseyTest.getClient 返回 RestEasyClient,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48337023/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com