JUnit 4.12 has support for custom failure messages (see release notes). This failure message is used if your test does not throw an expected exception. Everything else like wrong messages is handled by Hamcrest matchers.
JUnit 4.12 was released 2014-12-04.