我正在尝试迁移到springdoc-openapi;除了能够从mvn运行单元测试之外,其他所有功能都运行良好;以下maven命令生成404:
mvn -Dtest = SwaggerUITest测试-f TestSwaggerUi -P集成
Intellij运行它没有问题,因此我怀疑这是一个类加载问题。
我使用了下面示例中的代码,并添加了我的单元测试
https://www.baeldung.com/spring-rest-openapi-documentation
Guthub代码:
-https://github.com/eugenp/tutorials/tree/master/spring-boot-springdoc
对于单元测试,我添加到pom.xml中:
(我使用保证检查一下swagger-ui页面是否存在)
<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>rest-assured</artifactId>
<scope>test</scope>
<version>3.0.2</version>
</dependency>
测试本身:
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class SwaggerUITest extends AbstractRestAssuredSetupClass {
/**
* Test successful swagger-UI call
**/
@Test
public void getSwaggerUIPage() {
givenAnAdministratorIsAuthenticated()
.contentType(HTML)
.get("/swagger-ui/index.html?url=/v3/api-docs")
.then()
.statusCode(OK.value());
}
}
public abstract class AbstractRestAssuredSetupClass {
@Value("${request.logging.enabled:true}")
private boolean logRequests;
@Value("${response.logging.enabled:true}")
private boolean logResponses;
@Value("${local.server.port}")
private int port;
@Before
public void setUpRestAssured() {
RestAssured.baseURI = "http://localhost:" + port;
RestAssured.config = config().redirect(redirectConfig().followRedirects(false));
if (logRequests) {
RestAssured.filters(new RequestLoggingFilter());
}
if (logResponses) {
RestAssured.filters(new ResponseLoggingFilter());
}
}
protected RequestSpecification givenAnAdministratorIsAuthenticated() {
return RestAssured.given().auth().preemptive().basic("user", "user");
}
}
我还发现有人遇到相同的问题:https://github.com/springdoc/springdoc-openapi/issues/99
不幸的是没有解决办法。我也可以回到springfox。
这样的问题导致我迁移:https://github.com/springfox/springfox/issues/2932。
最佳答案
您可以看一下您从baeldung提到的样本。
我们已经将它添加到了演示中,并提供了UI的示例测试。 (SwaggerUnitTest)。它在travis-CI上的传递没有任何问题。
https://github.com/springdoc/springdoc-openapi-demos/tree/master/spring-boot-springdoc
您还可以查看测试:
https://github.com/springdoc/springdoc-openapi/blob/master/springdoc-openapi-ui/src/test/java/test/org/springdoc/ui/app1/SpringDocApp1Test.java
关于java - UnitTest调用/swagger-ui.html导致springdoc-openapi的404,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59068582/