Search code examples
javaregexjunit

Assert regex matches in JUnit


Ruby's Test::Unit has a nice assert_matches method that can be used in unit tests to assert that a regex matches a string.

Is there anything like this in JUnit? Currently, I do this:

assertEquals(true, actual.matches(expectedRegex));

Solution

  • If you use assertThat() with a Hamcrest matcher that tests for regex matches, then if the assertion fails you'll get a nice message that indicates expected pattern and actual text. The assertion will read more fluently also, e.g.

    assertThat("FooBarBaz", matchesPattern("^Foo"));
    

    with Hamcrest 2 you can find a matchesPattern method at MatchesPattern.matchesPattern.

    JUnit5:

    import static org.assertj.core.api.Assertions.assertThat;
    assertThat(actual).matches(expected);