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
我有一个 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