RFR: 8365776: Convert JShell tests to use JUnit instead of TestNG
Jan Lahoda
jlahoda at openjdk.org
Fri Sep 5 10:03:33 UTC 2025
On Tue, 19 Aug 2025 10:26:14 GMT, Jan Lahoda <jlahoda at openjdk.org> wrote:
> This is a conversion of JShell tests from TestNG to JUnit 5.
>
> To make the changes more transparent, there are 4 commit in this PR:
> - https://github.com/openjdk/jdk/pull/26841/commits/c6b5d8441ad532551e626b3542431aa3f479ffc0: this one changes a name of a custom interface representing test cases, so that subsequent commits can use a simple name for `org.junit.jupiter.api.Test` (otherwise `Test` would resolve to the custom interface is subclasses of `UITesting`, and FQN would need to be used to refer to the annotation).
> - https://github.com/openjdk/jdk/pull/26841/commits/2afee7d258f646f822d0b1bc3465d5595058e3df: the bulk of changes, done automatically by:
> The bulk of the changes is done automatically, using this tool/script:
> https://github.com/lahodaj/netbeans/tree/19515c3e2dbc07d977ca227d933197f856121ae5/java/java.openjdk.project/junit-convert
> - https://github.com/openjdk/jdk/pull/26841/commits/8ca03af1b4d06e479cdfe7cc66186222feeaaa76: manual adjustments for things the tool does not handle (at least currently):
> - one indent problem
> - two uses of injected `java.lang.reflect.Method`, which needs to be replaced with `TestInfo`
> - a different way to skip a test (normally, the tool detects and converts uses of `SkipException`, but that exception was not used on this place).
> - https://github.com/openjdk/jdk/pull/26841/commits/639da0171a593031dae6a73830bb1665b7097e73: scripted update to copyright headers, done using:
>
> bash ./make/scripts/update_copyright_year.sh -b `git merge-base master jshell-upgrade-testng-to-junit`
>
>
> As part of validation of this change, this script:
> [CompareTestResults.java](https://github.com/user-attachments/files/22169483/CompareTestResults.java)
> was used to compare the results in `junit.txt` and `testng.txt` in test results before and after the change, and it didn't find a difference in test counts.
I've updated the script and the patches here:
- the comments around the `@Test` annotation should now be preserved. (I tried to move the TODO comments to the `@Disabled` annotation, but it would probably take too much time.)
- the script no longer makes the data providers `static`, and adds the per-class lifecycle automatically if it detects the need. Or at least tries to.
To keep things sensible, I force pushed here. The original commits are available under branch `jshell-upgrade-testng-to-junit.bak1`.
-------------
PR Comment: https://git.openjdk.org/jdk/pull/26841#issuecomment-3201142106
More information about the compiler-dev
mailing list