我有一个包含jersey-client
和resteasyclient
库的项目。这有历史原因,因为我必须在执行目标方法时包含resteasyclient,junit-tests
返回jersey-test.getClient()
resteasyclient
,我得"RESTEASY004655 Unable to invoke the request"
。
当我手动排除resteasyclient.jar
时,它可以正常工作。
有没有办法在eclipse中测试时排除库?
答案 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();
}
有几点需要注意:
如果您在configureClient
覆盖JerseyTest
,则无法正常工作。您只需要使用getClient()
方法配置客户端。
可能最重要的是它不能与内存测试提供商合作。使用内存中测试提供程序时,客户端配置了一个特殊的内存连接器。如果要覆盖客户端,则应使用"真实服务器"测试提供者,就像grizzly2一样。
1 - 如果您想了解详细信息,请查看ClientBuilder的来源及其使用的FactoryFinder。