From ebe74080110975b0c1b013c8d4e635ba1e98edc8 Mon Sep 17 00:00:00 2001 From: Sam Brannen Date: Sun, 31 Jan 2021 17:28:24 +0100 Subject: [PATCH] Introduce AssertionTestUtils.assertMessageMatches assertMessageMatches() is a convenience method for using a RegEx instead of assertMessageStartsWith()/assertMessageEndsWith() combos. This commit makes use of the new method in AssertNullAssertionsTests but leaves all other existing tests unchanged. assertMessageMatches() can be used for new tests, or we can slowly migrate to it where it makes sense as we modify existing tests for some other reason. --- .../api/AssertNullAssertionsTests.java | 20 ++++++++----------- .../junit/jupiter/api/AssertionTestUtils.java | 7 +++++++ 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/junit-jupiter-engine/src/test/java/org/junit/jupiter/api/AssertNullAssertionsTests.java b/junit-jupiter-engine/src/test/java/org/junit/jupiter/api/AssertNullAssertionsTests.java index e219e334218..54849ad6d3b 100644 --- a/junit-jupiter-engine/src/test/java/org/junit/jupiter/api/AssertNullAssertionsTests.java +++ b/junit-jupiter-engine/src/test/java/org/junit/jupiter/api/AssertNullAssertionsTests.java @@ -11,8 +11,8 @@ package org.junit.jupiter.api; import static org.junit.jupiter.api.AssertionTestUtils.assertExpectedAndActualValues; -import static org.junit.jupiter.api.AssertionTestUtils.assertMessageEndsWith; -import static org.junit.jupiter.api.AssertionTestUtils.assertMessageStartsWith; +import static org.junit.jupiter.api.AssertionTestUtils.assertMessageEquals; +import static org.junit.jupiter.api.AssertionTestUtils.assertMessageMatches; import static org.junit.jupiter.api.AssertionTestUtils.expectAssertionFailedError; import static org.junit.jupiter.api.Assertions.assertNull; @@ -46,7 +46,7 @@ void assertNullWithNonNullObject() { expectAssertionFailedError(); } catch (AssertionFailedError ex) { - assertMessageEndsWith(ex, "expected: but was: "); + assertMessageEquals(ex, "expected: but was: "); assertExpectedAndActualValues(ex, null, "foo"); } } @@ -76,8 +76,7 @@ private void assertNullWithNonNullObjectWithNullStringReturnedFromToString(Suppl // Should look something like: // expected: but was: java.lang.String@264b3504 String prefix = (messageSupplier != null ? messageSupplier.get() + " ==> " : ""); - assertMessageStartsWith(ex, prefix + "expected: but was: java.lang.String@"); - assertMessageEndsWith(ex, ""); + assertMessageMatches(ex, prefix + "expected: but was: java\\.lang\\.String@.+"); assertExpectedAndActualValues(ex, null, actual); } } @@ -107,9 +106,8 @@ private void assertNullWithNonNullObjectWithNullReferenceReturnedFromToString(Su // Should look something like: // expected: but was: org.junit.jupiter.api.AssertNullAssertionsTests$NullToString@4e7912d8 String prefix = (messageSupplier != null ? messageSupplier.get() + " ==> " : ""); - assertMessageStartsWith(ex, - prefix + "expected: but was: org.junit.jupiter.api.AssertNullAssertionsTests$NullToString@"); - assertMessageEndsWith(ex, ""); + assertMessageMatches(ex, prefix + + "expected: but was: org\\.junit\\.jupiter\\.api\\.AssertNullAssertionsTests\\$NullToString@.+"); assertExpectedAndActualValues(ex, null, actual); } } @@ -121,8 +119,7 @@ void assertNullWithNonNullObjectAndMessage() { expectAssertionFailedError(); } catch (AssertionFailedError ex) { - assertMessageStartsWith(ex, "a message"); - assertMessageEndsWith(ex, "expected: but was: "); + assertMessageEquals(ex, "a message ==> expected: but was: "); assertExpectedAndActualValues(ex, null, "foo"); } } @@ -134,8 +131,7 @@ void assertNullWithNonNullObjectAndMessageSupplier() { expectAssertionFailedError(); } catch (AssertionFailedError ex) { - assertMessageStartsWith(ex, "test"); - assertMessageEndsWith(ex, "expected: but was: "); + assertMessageEquals(ex, "test ==> expected: but was: "); assertExpectedAndActualValues(ex, null, "foo"); } } diff --git a/junit-jupiter-engine/src/test/java/org/junit/jupiter/api/AssertionTestUtils.java b/junit-jupiter-engine/src/test/java/org/junit/jupiter/api/AssertionTestUtils.java index a95c27212ab..a2cd16f6629 100644 --- a/junit-jupiter-engine/src/test/java/org/junit/jupiter/api/AssertionTestUtils.java +++ b/junit-jupiter-engine/src/test/java/org/junit/jupiter/api/AssertionTestUtils.java @@ -38,6 +38,13 @@ static void assertMessageEquals(Throwable ex, String msg) throws AssertionError } } + static void assertMessageMatches(Throwable ex, String regex) throws AssertionError { + if (!ex.getMessage().matches(regex)) { + throw new AssertionError("Exception message should match regular expression [" + regex + "], but was [" + + ex.getMessage() + "]."); + } + } + static void assertMessageStartsWith(Throwable ex, String msg) throws AssertionError { if (!ex.getMessage().startsWith(msg)) { throw new AssertionError(