У меня есть приложение Spring Boot, которое предоставляет спецификацию Open API по пути /api/open-api/v3
. Идея состоит в том, что я запрашиваю Open API JSON во время запуска теста, а затем записываю его содержимое в файл в папке build
. Таким образом, я мог бы разобрать его позже и сгенерировать документацию. Я пытался сделать это так:
Files.writeString(Path.of("src", "test", "resources", "open-api.json"), res.getBody());
Он записал файл в папку src/test/resources
, но в самом модуле исходного кода. Папка не результат build
. Можно ли победить эту проблему?
@Test
@DisplayName("Create a file on the build diretory")
void createFileOnBuildDir() throws IOException {
final URL buildRoot = getClass().getResource("/");
final Path jsonFile = Path.of(buildRoot.getPath(), "open-api.json");
Files.writeString(jsonFile, "{\"value\": 123}");
System.out.println(jsonFile);
}
результат
/home/myuser/projects/testproject/build/classes/java/test/open-api.json
$ cat /home/myuser/projects/testproject/build/classes/java/test/open-api.json
{"value": 123}
Но, я думаю, лучшим ответом на ваши нужды является https://github.com/Swagger2Markup/spring-swagger2markup-demo/blob/master/src/test/java/io/github/robwin/swagger2markup/petstore/Swagger2MarkupTest.java проекта https://github.com/Swagger2Markup/spring-swagger2markup-demo.
Спасибо, это сработало. Я слышал о Spring REST Docs, но никогда не пробовал. я посмотрю на это