【问题标题】:How should I test a java rest api? [closed]我应该如何测试 java rest api? [关闭]
【发布时间】:2020-05-23 18:24:24
【问题描述】:

我想测试我的 rest api,但我有点困惑如何去做。不是关于使用哪个库,而是我应该测试什么。

我的应用程序基本上是关于 cruds 和报告的。一些特定的 cruds 根据提交的实体的状态填充另一个表。

如果我想测试这些行为,我应该直接测试服务/存储库层还是向我的端点发出请求?

P.S:我的应用程序将被 SPA 使用。所以可能我也需要测试那个应用程序的请求,对吧?

【问题讨论】:

  • 我会做一个集成测试,看看整个端点是否运行良好。如果您有一些功能可以验证您的对象或做一些魔术(例如,根据您的请求生成 OTP 代码或自定义 JWT 令牌等),我会进行一些单元测试以检查这些功能是否适用于正确的对象和错误的对象(例如缺少用户名等)

标签: java rest testing integration-testing web-api-testing


【解决方案1】:

关于测试什么。你决定什么是好的测试,没有直接的答案。您指定的两个选项均有效。您可以只进行集成测试,也可以将服务/存储库级别的单元测试 + REST 协议级别的集成测试结合使用。这在很大程度上取决于您正在开发什么,但也取决于开发人员的偏好。近年来,越来越多的单元测试有被集成测试取代的趋势。我个人更喜欢将两者结合起来,甚至以牺牲一些冗余为代价。

关于技术和工艺:

一个是 RestAsure 或 Spring Mvc。这将构建 spring boot 类型的集成测试层,或者我称之为集成测试 - 轻量级。

优点:您可以轻松打开和关闭不同的组件进行细粒度测试。它可以像单元测试一样细化。 缺点:倾向于过多的技术细节。

另一种方法是构建针对您的容器的外部套装 - tomcat / jetty。

优点:您的测试独立于您的组件/部署。它与组件实现完全无关。

缺点:您有效地进行了两种部署,一种用于测试,一种用于要测试的组件。

第三种有趣的方法是使用 Restdoc 并一次性记录您的 api 并构建完整的合同/集成测试。

优点:您可以一次性获得集成测试和文档。

缺点:更多工作的代价。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多