如何从 Java 单元测试中捕获或强制执行 REST API 覆盖?

Posted

技术标签:

【中文标题】如何从 Java 单元测试中捕获或强制执行 REST API 覆盖?【英文标题】:How can I capture or enforce REST API coverage from Java unit tests? 【发布时间】:2016-09-12 06:29:52 【问题描述】:

在将代码覆盖率作为一个概念并推动我们的代码实现 70% 以上的行覆盖率之后,管理层现在对 REST API 覆盖率很感兴趣。

我们目前正在尝试使用 RAML 定义 JAX-RS REST 资源,并使用代码生成来构建 JAX-RS 模型和接口。显然,RAML 可以定义哪些方法应该可用的资源集,指示可以接受和生成哪些 MIME 类型,以及哪些状态代码是对任何给定调用的可接受响应。

是否有任何工具或测试框架可用于跟踪一组单元测试并确保已使用所有适用的资源、已生成所有状态代码等?

不确定是否最好将其归结为一个数字并跟踪阈值/随着时间的推移;或者当覆盖不完整时是否只记录单元测试失败。现在很高兴考虑这两种解决方案!

【问题讨论】:

【参考方案1】:

我不知道有什么特定的工具可以做到这一点。如果没有可用的,我建议只测量生成代码的代码覆盖率。通过寻找覆盖率低于平均水平的资源实现类可能很容易找到未经测试的资源(即使在经过良好测试的生成类中存在未发现的代码)。

我怀疑您是否可以通过这种方法为每个资源实现“状态代码覆盖率”,因为任何合理的 API 实现都会在一个地方以通用方式实现一些错误状态,但是也许您真的不需要那个如果您涵盖了所有生成的代码。

【讨论】:

以上是关于如何从 Java 单元测试中捕获或强制执行 REST API 覆盖?的主要内容,如果未能解决你的问题,请参考以下文章

在java测试中强制执行assertj

如何对这个从管道可观察到的错误捕获的 Angular 打字稿 Http 错误拦截器进行单元测试?

单元测试(参考阿里巴巴Java开发手册)

Cordova - 如何从 android 代码更改页面?

如何在单元测试中正确捕获 zap logger 输出

如何从 QTest 单元测试中编辑 QTableView 单元格?