diff --git a/spring-test/src/main/java/org/springframework/test/web/reactive/server/ExchangeResult.java b/spring-test/src/main/java/org/springframework/test/web/reactive/server/ExchangeResult.java index 27c93773bf..e44c3b9f06 100644 --- a/spring-test/src/main/java/org/springframework/test/web/reactive/server/ExchangeResult.java +++ b/spring-test/src/main/java/org/springframework/test/web/reactive/server/ExchangeResult.java @@ -79,6 +79,9 @@ public class ExchangeResult { @Nullable private final Object mockServerResult; + /** Ensure single logging, e.g. for expectAll. */ + private boolean diagnosticsLogged; + /** * Create an instance with an HTTP request and response along with promises @@ -121,6 +124,7 @@ public class ExchangeResult { this.timeout = other.timeout; this.uriTemplate = other.uriTemplate; this.mockServerResult = other.mockServerResult; + this.diagnosticsLogged = other.diagnosticsLogged; } @@ -227,7 +231,8 @@ public class ExchangeResult { assertion.run(); } catch (AssertionError ex) { - if (logger.isErrorEnabled()) { + if (!this.diagnosticsLogged && logger.isErrorEnabled()) { + this.diagnosticsLogged = true; logger.error("Request details for assertion failure:\n" + this); } throw ex; diff --git a/spring-test/src/test/java/org/springframework/test/web/reactive/server/samples/SoftAssertionTests.java b/spring-test/src/test/java/org/springframework/test/web/reactive/server/samples/SoftAssertionTests.java index a4d4bb8c72..db7b242fff 100644 --- a/spring-test/src/test/java/org/springframework/test/web/reactive/server/samples/SoftAssertionTests.java +++ b/spring-test/src/test/java/org/springframework/test/web/reactive/server/samples/SoftAssertionTests.java @@ -46,15 +46,19 @@ class SoftAssertionTests { } @Test - void expectAllWithMultipleFailures() throws Exception { - assertThatExceptionOfType(AssertionError.class).isThrownBy(() -> - this.webTestClient.get().uri("/test").exchange() - .expectAll( - responseSpec -> responseSpec.expectStatus().isBadRequest(), - responseSpec -> responseSpec.expectStatus().isOk(), - responseSpec -> responseSpec.expectBody(String.class).isEqualTo("bogus") + void expectAllWithMultipleFailures() { + assertThatExceptionOfType(AssertionError.class) + .isThrownBy(() -> + this.webTestClient.get().uri("/test").exchange() + .expectAll( + responseSpec -> responseSpec.expectStatus().isBadRequest(), + responseSpec -> responseSpec.expectStatus().isOk(), + responseSpec -> responseSpec.expectBody(String.class).isEqualTo("bogus") + ) ) - ).withMessage("Multiple Exceptions (2):\nStatus expected:<400 BAD_REQUEST> but was:<200 OK>\nResponse body expected: but was:"); + .withMessage("Multiple Exceptions (2):\n" + + "Status expected:<400 BAD_REQUEST> but was:<200 OK>\n" + + "Response body expected: but was:"); }