JDK 9 RFR of JDK-8023897: Replace/update/rename executeAndCatch in various tests to assertThrows

Pavel Rappo pavel.rappo at oracle.com
Tue May 2 11:15:26 UTC 2017

Hi Amy,

Thanks a lot for doing this! I personally think it's a beginning of a very
valuable refactoring to our test base. It turns out this little piece of
functionality, namely, checking that a particular exception is thrown from code
is error-prone. I have seen many buggy implementations defective in one way or
another. What's worse is that sometimes many of them coexist in the same code
base. Even in the JDK this beast has many names:

    tryCatch, verifyException, expectThrows, checkException, expectThrow,
    assertThrows, THROWS, check, uncaughtException, testThrowException,
    assertSecurityException, ...

This list does not include countless ad-hoc bare try-catch constructs. After
this has been done, I would go even further, and in some cases change tests that
use @Test(expectedException=...) annotation to use this method instead.

Looks good. Wait for a Reviewer and you are good to go.


> On 2 May 2017, at 10:19, Amy Lu <amy.lu at oracle.com> wrote:
> Please review this test-only change.
> Some java/util tests use a function executeAndCatch which essentially asserts that an exception is thrown, while some other tests use assertThrows for doing the same work. For both cases, with jtreg upgraded to testng 6.9.5 (CODETOOLS-7901639), test can then leverage TestNG Assert.assertThrows
> Please review the patch to update executeAndCatch and assertThrows to Assert.assertThrows for java/util testng tests.
> bug: https://bugs.openjdk.java.net/browse/JDK-8023897
> webrev: http://cr.openjdk.java.net/~amlu/8023897/webrev.00/
> Thanks,
> Amy

More information about the core-libs-dev mailing list