Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在测试中使用Swagger验证API?_Java_Api_Validation_Continuous Integration_Swagger - Fatal编程技术网

Java 如何在测试中使用Swagger验证API?

Java 如何在测试中使用Swagger验证API?,java,api,validation,continuous-integration,swagger,Java,Api,Validation,Continuous Integration,Swagger,我正试图找出让我的API文档成为真实来源的最佳方法,并使用它来验证实际的JavaREST代码,理想情况下是通过集成测试或类似的方式。我们使用的是契约优先或消费者契约类型的方法,因此我们不希望文档必须从注释代码生成,并且在开发人员每次进行更改时都进行更新 一个想法是使用Swagger,但我不确定如何最好地将其用于验证API。理想情况下,最好在构建或集成测试过程中进行验证,以查看实际响应(以及请求,如果可能)是否符合预期。我知道招摇过市有很多用途和工具,我只是试着用头脑去理解它。或者,如果有更好的方

我正试图找出让我的API文档成为真实来源的最佳方法,并使用它来验证实际的JavaREST代码,理想情况下是通过集成测试或类似的方式。我们使用的是契约优先或消费者契约类型的方法,因此我们不希望文档必须从注释代码生成,并且在开发人员每次进行更改时都进行更新


一个想法是使用Swagger,但我不确定如何最好地将其用于验证API。理想情况下,最好在构建或集成测试过程中进行验证,以查看实际响应(以及请求,如果可能)是否符合预期。我知道招摇过市有很多用途和工具,我只是试着用头脑去理解它。或者,如果有更好的方法来使用Java代码。

如果您使用的是Spring框架,我强烈建议您检查一下哪些工具可以生成Java代码。

最近,我们(swagger codegen社区)开始向API客户机(C#,PHP,Ruby)添加自动测试用例生成。我们还没有将其添加到Java中。下面是由Swagger Codegen为C#生成的一些示例测试用例:


这仍然是非常初步的,我们希望听到您的反馈,看看这是否就是您所寻找的。

我认为您应该尝试使用swagger请求验证程序:

下面是一些如何使用它的示例:

另一种选择是assertj swagger:

您可能想看看。它为您提供了一个DSL,您可以在其中描述场景(对于给定的请求,我或多或少会得到什么样的响应),并且它似乎非常适合您所描述的需求…

我不想生成api文档。相反,我想做的是合同第一类型的想法,其中虚张声势是真相的来源,然后验证请求、响应、有效负载,以确保开发人员没有违反合同。我想知道背后的想法是什么。基本上,斯威格让你描述的是一系列的选择。对于某个资源,我可能会得到200、400、404、500、最后三个响应,可能还有一些错误负载。但是测试也需要一个具体的选择——对于这个特定的输入,我得到这个输出。据我所知,很难从狂妄自大的定义中推断出来。或者我们在谈论不同的测试?顺便说一句,上面的链接是404'edYes,很难从swagger规范中推断测试。自动生成的测试用例旨在让开发人员更容易编写测试。我们还探讨了使用供应商扩展在规范中记录测试用例的可能性,但目前社区似乎对此不感兴趣。(我已经修复了链接)SpringCloud合同允许与Swagger集成吗?据我所知,这听起来像是两个完全不同的意图和目的。你在考虑什么样的集成?如果Spring Cloud Contract能够读取并使用Swagger JSON/YAML文件作为其验证的基础,那将是理想的。assertj-Swagger supoprt Swagger 2.0仅供参考。