gpt4 book ai didi

java - 测试 java jersey 应用程序

转载 作者:行者123 更新时间:2023-12-02 01:26:58 25 4
gpt4 key购买 nike

我有一个从前端调用的 java/jersey api。我需要为java代码编写测试。代码的写法是:1. api调用执行resource方法,这会调用一个单独的方法,从db获取数据并返回到resource方法。然后,这将向客户端返回 javax.ws.rs.core.Response。

这将是我第一次编写测试,所以考虑到我什么都不知道,请回答。从这里开始的最佳方式是什么?我应该编写什么类型的测试。单元测试是我的目标。

现在我已经在这里做了很多研究,并且我倾向于使用 JUnit + Mockito 来做到这一点。但是如何检查 Response 对象中的数据呢?

我应该如何检查从数据库获取数据的其他文件?我发现 DBUnit 可以做到这一点,但我需要它吗?

我遇到的另一个框架是 Rest Assured。我还需要包括它吗?或者可以用 JUnit/Mockito 完成同样的事情吗?

我只是想从测试过 jersey api 的人那里得到一些指导。并想知道最常见的方法是什么。

最佳答案

我认为没有最好的方法来做到这一点,您需要测试的内容通常是主观的并且取决于上下文。

但是,您可以以最重要的部分易于测试的方式构建代码,而剩下的部分(集成)可以稍后/使用不同的工具完成。

我在这里建议遵循六边形架构的原则。这个想法是保持应用程序的中心,并且不依赖于任何框架(jaxrsjpa等)所有业务规则。这些规则可以使用 TDD 轻松设计。然后您将进行非常短的运行测试。可能需要使用 Mockito 来模拟 SPI 接口(interface)的实现。

第二次,您可以通过将适配器连接到外部世界(HTTP、数据库、AMQP 等)、使用 API 并实现 SPI 接口(interface)来使用这个“核心”。

如果您想测试这些适配器,请退出单元测试范围,并编写集成测试。与框架、协议(protocol)等任何东西的集成。这种测试可以使用各种各样的工具,从与框架相关的模拟(如Jersey测试框架)、内存数据库(如H2),到完全使用testcontainers等工具的操作中间件实例。

编写集成测试时要记住的重要一点是它们在单元测试方面很慢。为了使反馈循环尽可能短,您需要将集成测试的数量限制到最少。

希望这对您有帮助!

关于java - 测试 java jersey 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56762368/

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