【问题标题】:Testing REST service in java在java中测试REST服务
【发布时间】:2013-01-17 16:38:27
【问题描述】:

所以,事情就是这样。
我正在使用的 REST 服务应该经过测试,但我无法访问代码。

我在 java 中创建了某种库,因此我可以与该服务进行交互,但我需要对我的库进行单元测试(实际上它还没有实现,我正在使用 TDD)所以我可以确定它是否有效.

我该怎么做才能不弄乱服务(我不想创建或删除任何东西)? 我应该使用某种模拟还是存根?如果可以,怎么做?

谢谢!

【问题讨论】:

  • 您是在寻找 Java 代码来访问您的服务,还是在寻找实现这一目标的方法?
  • 哈哈,事实上你需要测试,你已经构建了代码意味着你没有做 TDD!
  • @blo0p3r,我想看看一种方法。
  • @Will,正如我所说,该库仍未实现。我将使用 TDD,但我需要知道如何在不实际交互的情况下测试服务调用。
  • 抱歉!为您添加了答案,而不是油嘴滑舌。

标签: java web-services rest testing tdd


【解决方案1】:

我使用Jersey test framework 进行测试 - 如果您使用 Jersey 编写代码。它在后台疯狂地运行。

您可以使用 HttpUnit 的 PseudoServer 来创建虚假响应。

或者您可以使用HttpClient 生成帖子并获取对您正在运行的服务的请求。

【讨论】:

  • Jersey 听起来不错,但我正在将整个应用程序调整为 Jersey ......我认为它不适合这个项目。 httpClient 实际上会发出请求,而这正是我需要避免的。谢谢回复!
【解决方案2】:

您可以使用模拟框架(我喜欢Mockito)来模拟您的 API 端点库。然后,您可以使用传统的 junit 测试来确保您的库正在进行预期的 API 调用。

如果您想实际进行 HTTP 调用,可以使用的其他库很少(已经建议使用 Jersey 客户端)。

【讨论】:

  • 我认为 mockito 是我一直在寻找的东西:一种模拟端点的方法。如前所述,我不认为我在使用 Http 调用...谢谢!
  • 你知道我怎样才能实现我的目标吗?我什至不知道从哪里开始>。
  • 模拟进行 HTTP 调用的 Java 函数,并在你的模拟中返回一些硬编码的现有值。这足以模拟 HTTP API。现在像往常一样测试你的程序。
【解决方案3】:

rest assured 是您想要找到的东西吗?

【讨论】:

    【解决方案4】:

    我的组织使用 spring 来生成我们的模拟休息服务。 Spring MVC test framework (formally spring social test) 效果很好。但是,如果您还没有使用 spring,我建议您使用 Jmock、mockito 或 easy mock 来伪造响应。

    【讨论】:

      【解决方案5】:

      我不喜欢使用模拟的想法,因为它忽略了 HTTP 的内容。最好使用像enter link description here 这样的模拟服务器。首先这有点棘手,但是一旦您启动并运行了测试用例,它就会变得轻而易举。我使用随机端口来启动模拟服务器,以便可以并行运行测试。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-04-02
        • 1970-01-01
        • 1970-01-01
        • 2010-09-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多