java - Eclipse:JerseyTest.getClient 返回 RestEasyClient

标签 java eclipse junit jersey resteasy

我有一个项目,其中 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/

相关文章:

c++ - Eclipse 格式化程序 : Enums and Constructor

java - 创建 JTable 的 Junit 测试是否良好?

java - 为 JUnit 类别创建注解

Java 特征求解器

java - Tomcat 服务器未在 Eclipse 中运行项目

java - 将所需的jar添加到Eclipse下的Application中

java - 为什么我收到 NoClassDefFoundError/ClassNotFoundException

java - Mockito:要测试的类中的空对象

java - Weblogic EJB 调用在中等负载下开始失败并出现OptionalDataException

java - Spring MVC/Apache Tiles 应用程序中定义的 'param' 变量在哪里