我有一个项目,其中 jersey-client
和 resteasyclient
包括图书馆。这是有历史原因的,因为我必须包括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();
}
对此需要注意的几点:
如果您在
JerseyTest
中覆盖configureClient
,它将不起作用。您只需在getClient()
方法中配置客户端即可。最重要的可能是它无法与内存测试提供程序一起使用。当使用内存测试提供程序时,客户端配置有一个特殊的内存连接器。如果您想覆盖客户端,那么您应该使用“真实服务器”测试提供程序,例如 grizzly2。
1 - 如果您想了解详细信息,请查看 ClientBuilder 的源代码和 FactoryFinder它使用的。
关于java - Eclipse:JerseyTest.getClient 返回 RestEasyClient,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48337023/