RFR: 8366678: Use JUnit in test/langtools/tools/javac

Christian Stein cstein at openjdk.org
Wed Sep 3 13:12:37 UTC 2025


Please review this change to use JUnit in tests of `test/langtools/tools/javac`.

### Assess Status Quo
A local `make test TEST=test/langtools/tools/javac` run before the conversion yields:

Test results: passed: 3,938; excluded: 4; did not match keywords: 2; did not meet platform requirements: 2
Framework-based tests: 3043 = 2762 TestNG + 281 JUnit


### Perform Automatic Conversion
- [junit-convert](
https://github.com/lahodaj/netbeans/tree/openjdk-testng-junit-fixes-and-hacks/java/java.openjdk.project/junit-convert)

### Perform Manual Adjustments

Some of the following adjustments will be integrated into the `junit-convert` tool.

#### Make argument source factory method `static`

Method 'public java.lang.Object[][] org.openjdk.tests.javac.FDTest.caseGenerator()'
  must be static: local factory methods must be static
  unless the PER_CLASS @testinstance lifecycle mode is used;
  external factory methods must always be static.


#### Make `@AfterAll`-annotated method `static`

[ERROR] @afterall method 'public void org.openjdk.tests.vm.FDSeparateCompilationTest.cleanupCompilerCache()'
  must be static unless the test class
  is annotated with `@TestInstance(Lifecycle.PER_CLASS)`.


#### Remove `static` modifier from `@Test`-annotated methods
This configuration error should have been detected by JUnit Jupiter and reported via the Discovery
Issues API: https://docs.junit.org/current/user-guide/#running-tests-discovery-issues

#### Rename test property to `JUnit.dirs`

package org.junit.jupiter.api does not exist


#### Add custom test instance factory

Class [FDTests] must declare a single constructor
Class [MethodReferenceTestKinds] must declare a single constructor


### Results
Re-run tests via `make test TEST=test/langtools/tools/javac` after the conversion; yielding:

Test results: passed: 3,939; excluded: 4; did not match keywords: 2; did not meet platform requirements: 2
Framework-based tests: 3043 = 0 TestNG + 3043 JUnit

-------------

Commit messages:
 - Remove `static` modifier from `@Test`-annotated methods
 - Manual adjustments
 - Initial automatic conversion

Changes: https://git.openjdk.org/jdk/pull/27046/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=27046&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8366678
  Stats: 628 lines in 39 files changed: 211 ins; 92 del; 325 mod
  Patch: https://git.openjdk.org/jdk/pull/27046.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/27046/head:pull/27046

PR: https://git.openjdk.org/jdk/pull/27046


More information about the compiler-dev mailing list