JUnit5:在构建目录中创建新文件

JUnit5: create new file in build directory

我有一个 Spring 引导应用程序,它通过 /api/open-api/v3 路径提供打开 API 规范。我的想法是,我在测试 运行 期间请求打开 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 project's https://github.com/Swagger2Markup/spring-swagger2markup-demo/blob/master/src/test/java/io/github/robwin/swagger2markup/petstore/Swagger2MarkupTest.java