openapi - 基于 Maven 的示例引发异常
问题描述
我遇到了与其他一些尝试在 openapi YAML 规范中使用 spring-cloud-contract-oa3 插件和合同的人非常相似的问题。
我正在使用带有 2.1.2.0 插件和 3.0.3 的 SCC 的 Maven -
<build>
<plugins>
<plugin>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-contract-maven-plugin</artifactId>
<version>3.0.3</version>
<extensions>true</extensions>
<configuration>
<testFramework>JUNIT5</testFramework>
<baseClassForTests>com.bt.b2c.oa3cdc.contracts.BaseTestClass</baseClassForTests>
</configuration>
<dependencies>
<dependency>
<groupId>guru.springframework</groupId>
<artifactId>spring-cloud-contract-oa3</artifactId>
<version>2.1.2.0</version>
</dependency>
</dependencies>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
我有点怀疑的是,错误暗示使用了默认解析器(因此会中断)。在下面的日志中,我们不希望看到 OpenApiContractConverter 被使用吗?
[DEBUG] Parsed rootNode: {"openapi":"3.0.1", ..... }
[ERROR] Unexpected error in reading contract file
[ERROR] Cannot compare java.util.ArrayList with value '[null, null]' and java.lang.Integer with value '0'
[WARNING] Error Processing yaml file. Skipping Contract Generation
java.lang.IllegalStateException: Exception occurred while processing the file [E:\git\selfserve\oa3cdc\src\test\resources\contracts\incidents_openapi.yaml]
at org.springframework.cloud.contract.verifier.converter.YamlToContracts.convertFrom(YamlToContracts.java:94)
at org.springframework.cloud.contract.verifier.converter.YamlContractConverter.isAccepted(YamlContractConverter.java:63)
at org.springframework.cloud.contract.verifier.file.ContractFileScanner.tryConvert(ContractFileScanner.java:320)
at org.springframework.cloud.contract.verifier.file.ContractFileScanner.addContractToTestGeneration(ContractFileScanner.java:302)
at org.springframework.cloud.contract.verifier.file.ContractFileScanner.appendRecursively(ContractFileScanner.java:268)
at org.springframework.cloud.contract.verifier.file.ContractFileScanner.findContractsRecursively(ContractFileScanner.java:237)
at org.springframework.cloud.contract.verifier.TestGenerator.generateTestClasses(TestGenerator.java:131)
at org.springframework.cloud.contract.verifier.TestGenerator.generate(TestGenerator.java:111)
at org.springframework.cloud.contract.maven.verifier.GenerateTestsMojo.execute(GenerateTestsMojo.java:300)
有任何想法吗?我怀疑我做了一些愚蠢的事情,但我没有看到
解决方案
您正在使用版本 3.0.3 中的 Spring Cloud Contract 和版本 2.1.2.0 中与 SCC 3.0.3 不兼容的 openapi 插件。在分支的插件upgrade
分支中,我已升级插件以与 SCC 3.0.x 兼容。要使用它,您应该按以下方式使用 jitpack.io
<build>
<plugins>
<plugin>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-contract-maven-plugin</artifactId>
<version>3.0.3</version>
<extensions>true</extensions>
<configuration>
<testFramework>JUNIT5</testFramework>
<baseClassForTests>com.bt.b2c.oa3cdc.contracts.BaseTestClass</baseClassForTests>
</configuration>
<dependencies>
<!-- Until a Spring Cloud Contract 3.0.x compatible version gets released -->
<dependency>
<groupId>com.github.marcingrzejszczak</groupId>
<artifactId>spring-cloud-contract-oa3</artifactId>
<version>upgrade-SNAPSHOT</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
<pluginRepositories>
<pluginRepository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</pluginRepository>
</pluginRepositories>
推荐阅读
- tensorflow - Tensorflow 推理运行时间在第一个数据点上很高,在后续数据点上减少
- android - 如何在没有 OnNext 的情况下使用 RxJava 引发异常
- xcode - 如何从我的项目中删除多个 git 源控件?
- qt5 - 如何在另一个 QTabWidget 选项卡上更新 QTextEdit?
- authentication - OAuth 2.0 是否应该用于身份验证超时?
- solr - solr:使用带有 edismax 的 MLT,有没有办法获取有趣的术语然后传递给 edismax 常规查询?
- python - 有没有一种方法可以计算特定列中特定单词每天出现的次数?
- python - 坚持创建骰子滚轮
- c# - EF Core - 基于租户的 AutoInc 字段
- java - 使用 JDBC 将数据添加到 postgreSQL 中的表的正确方法?