我正在编写一个 Rest API,我的自动化测试直接调用该类,而无需将其部署到服务器。例如,我正在测试这种方法:
@GET
@Path("/{referenceId}")
@Produces("application/json")
public String findByReferenceId(@PathParam("referenceId") String referenceId,
String view) {
我的测试正在检查逻辑是否有效并且它们通过了。但是这段代码有一个错误:我忘记在该参数上添加@QueryParam
注释。view
因此,此代码在测试时有效,但如果您尝试在已部署的应用程序上使用此资源,则该view
参数将永远无法设置。
有很多方法可以解决这个问题,但我目前的偏好是以某种方式编写一个自动检查,如果一个方法有@Path
注释,那么每个参数必须有 a @PathParam
, a@QueryParam
或任何其他有效的注释。
我更喜欢这个而不是新的端到端测试,因为我的其他测试已经涵盖了该逻辑的 95%。我只是不知道如何自动执行此检查。我正在使用 Maven 和 CXF(这意味着我正在使用 Spring)。我希望有一个可以配置为执行此操作的插件。
我刚刚意识到:有一个没有注释的参数是有效的。当你这样做时,jax-rs 将它设置为你传入的实体。我不确定如何处理这种情况。我可以创建自己的自定义注释@Payload
并告诉人们使用它,但似乎有些不对劲。