Eri*_*rra 8 java automated-tests swagger spring-boot swagger-2.0
我尝试使用 Swagger 测试模板,发现这是一个有趣的工具来为我的控制器生成测试文件,但它似乎只适用于 NodeJs 项目,因为 Java 平台没有类似的工具。
有人知道如何通过为 spring 启动项目使用 swagger 文件从我的控制器生成这些测试文件吗?
PD:
我曾尝试使用 RepreZen 和 SwaggerHub 等商业工具,但它们不会为我生成测试文件。
我也尝试过使用 swagger-generator jar 工具来生成那些类型的文件,但是这个工具只是为客户端生成代码,而不是为服务器生成代码。
Thx你很多!
为了测试 Spring 系列项目的 API,您可以使用 Springfox + AssertJ Swagger 库。您还需要一个包含 API 规范的 YAML 文件。该解决方案的主要思想是将契约优先的 Swagger YAML 文件与 SpringFox 生成的代码优先的 Swagger JSON 进行比较。
Springfox与 Spring MVC 集成,支持 Swagger 1.2 和 Swagger 2.0 规范。Springfox 能够在运行时为使用 Spring 构建的 API 自动生成 JSON API 文档。
Assertj-Swagger是一个库,它将设计优先的 Swagger YAML 与实现优先的 Swagger JSON 输出(例如来自 springfox)进行比较。assertj-swagger 允许验证实现是否符合设计规范。
pom.xml
<!-- http://springfox.io -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.6.1</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.6.1</version>
</dependency>
<dependency>
<groupId>io.github.robwin</groupId>
<artifactId>assertj-swagger</artifactId>
<version>0.6.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
<version>3.8.0</version>
<scope>test</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)
测试代码:
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class AssertJSwaggerConsumerDrivenTest {
@LocalServerPort
int randomPort;
@Test
public void validateThatImplementationSatisfiesConsumerSpecification() {
File designFirstSwagger = new File(AssertJSwaggerConsumerDrivenTest.class.getResource("/swagger.yaml").getFile());
SwaggerAssertions.assertThat("http://localhost:" + randomPort + "/v2/api-docs")
.satisfiesContract(designFirstSwagger.getAbsolutePath());
}
}
Run Code Online (Sandbox Code Playgroud)
java.lang.UnsupportedClassVersionError: io/github/robwin/swagger/test/SwaggerAssertions : Unsupported major.minor version 52.0java.lang.NoSuchMethodError: io.swagger.models.parameters.AbstractSerializableParameter.setMaximum(Ljava/lang/Double;)V埃里克森,
虽然 RepreZen API Studio 目前不包含用于单元测试的生成器模板,但您可以使用内置工具和代码生成框架为此目的编写自定义代码生成器。
更多信息在这里: http: //docs.reprezen.com/#code-gen
如果您想就此进行合作,请随时与我们联系。
特德·爱泼斯坦,首席执行官 代表禅
| 归档时间: |
|
| 查看次数: |
12617 次 |
| 最近记录: |