From bc66fe56430ed9ee84f0ca23f754810e01502a5e Mon Sep 17 00:00:00 2001 From: Andy Wilkinson Date: Fri, 30 Aug 2019 11:37:22 +0100 Subject: [PATCH] Polish "Allow custom snippets directory via JUnit 5" See gh-633 --- docs/src/docs/asciidoc/getting-started.adoc | 14 +++++------ .../restdocs/RestDocumentationExtension.java | 24 ++++++++++++++----- 2 files changed, 25 insertions(+), 13 deletions(-) diff --git a/docs/src/docs/asciidoc/getting-started.adoc b/docs/src/docs/asciidoc/getting-started.adoc index 9c534871..8ce277be 100644 --- a/docs/src/docs/asciidoc/getting-started.adoc +++ b/docs/src/docs/asciidoc/getting-started.adoc @@ -397,20 +397,20 @@ based on your project's build tool: |=== -If you are using JUnit 5.1 or later the default can be overridden by providing -an output directory when registering the `RestDocumentationExtension` instance: +If you are using JUnit 5.1, you can override the default by registering the extension +as a field in your test class and providing an output directory when creating it. The +following example shows how to do so: [source,java,indent=0] ---- public class JUnit5ExampleTests { - @RegisterExtension - static final RestDocumentationExtension restDocumentation = - new RestDocumentationExtension ("custom"); + + @RegisterExtension + final RestDocumentationExtension restDocumentation = new RestDocumentationExtension ("custom"); + } ---- - - Next, you must provide a `@BeforeEach` method to configure MockMvc, WebTestClient, or REST Assured. The following listings show how to do so: diff --git a/spring-restdocs-core/src/main/java/org/springframework/restdocs/RestDocumentationExtension.java b/spring-restdocs-core/src/main/java/org/springframework/restdocs/RestDocumentationExtension.java index 7b9cf57a..743ad319 100644 --- a/spring-restdocs-core/src/main/java/org/springframework/restdocs/RestDocumentationExtension.java +++ b/spring-restdocs-core/src/main/java/org/springframework/restdocs/RestDocumentationExtension.java @@ -34,11 +34,21 @@ public class RestDocumentationExtension implements BeforeEachCallback, AfterEach private final String outputDirectory; - public RestDocumentationExtension () { + /** + * Creates a new {@code RestDocumentationExtension} that will use the default output + * directory. + */ + public RestDocumentationExtension() { this(null); } - public RestDocumentationExtension (String outputDirectory) { + /** + * Creates a new {@code RestDocumentationExtension} that will use the given + * {@code outputDirectory}. + * @param outputDirectory snippet output directory + * @since 2.0.4 + */ + public RestDocumentationExtension(String outputDirectory) { this.outputDirectory = outputDirectory; } @@ -75,11 +85,13 @@ public class RestDocumentationExtension implements BeforeEachCallback, AfterEach this::createManualRestDocumentation, ManualRestDocumentation.class); } - private ManualRestDocumentation createManualRestDocumentation (Class key) { - if (outputDirectory != null) { - return new ManualRestDocumentation(outputDirectory); - } else { + private ManualRestDocumentation createManualRestDocumentation(Class key) { + if (this.outputDirectory != null) { + return new ManualRestDocumentation(this.outputDirectory); + } + else { return new ManualRestDocumentation(); } } + }