HBASE-29968 Upgrade hbase-mapreduce to use junit5#7996
HBASE-29968 Upgrade hbase-mapreduce to use junit5#7996liuxiaocs7 merged 1 commit intoapache:branch-2from
Conversation
liuxiaocs7
commented
Mar 28, 2026
- for branch-2
- see: HBASE-29968
3bd3290 to
1ac924a
Compare
|
Spotless check fails due to HBASE-29863, #7823 Let me file an addendum first |
3e182c6 to
86145f5
Compare
86145f5 to
ab59a61
Compare
There was a problem hiding this comment.
Pull request overview
This PR updates the hbase-mapreduce module’s test suite to run on JUnit 5 (Jupiter) for branch-2 (HBASE-29968), modernizing test annotations/assertions and adjusting test dependencies accordingly.
Changes:
- Migrates many mapreduce/mapred/replication tests from JUnit4 (
@BeforeClass,@Category, JUnit4 assertions) to JUnit5 (@BeforeAll,@Tag, Jupiter assertions,TestInfo, etc.). - Updates Mockito usage for JUnit5 (switching the test dependency to
mockito-junit-jupiter, adoptingMockitoExtension, and usinglenient()where needed). - Removes
junit-vintage-enginefromhbase-mapreduce’s test dependencies.
Reviewed changes
Copilot reviewed 75 out of 75 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationBase.java | Adds JUnit5 lifecycle annotations alongside existing JUnit4 ones for shared replication test base. |
| hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/snapshot/TestExportSnapshotV2NoCluster.java | Minor formatting-only change. |
| hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/replication/VerifyReplicationTestBase.java | Migrates VerifyReplication tests to JUnit5, refactors class and lifecycle methods. |
| hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/replication/TestVerifyReplicationSecureClusterCredentials.java | Converts parameterized security test to JUnit5 @ParameterizedTest/@MethodSource. |
| hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/replication/TestVerifyReplicationRecompareRunnable.java | Converts to JUnit5 + MockitoExtension; adds lenient stubbing. |
| hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/replication/TestVerifyReplicationCrossDiffHdfs.java | Migrates to JUnit5 tags/lifecycle/assertions. |
| hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/replication/TestVerifyReplicationAdjunct.java | Migrates to JUnit5; updates references to shared VerifyReplication helpers. |
| hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/regionserver/TestCompactionToolNpeFix.java | Migrates to JUnit5 tags and lifecycle hooks. |
| hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/regionserver/TestCompactionTool.java | Migrates to JUnit5 tags and lifecycle hooks. |
| hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestWALRecordReader.java | Migrates to JUnit5; replaces “assertTrue(false)” patterns with fail(...). |
| hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestWALPlayer.java | Migrates to JUnit5; replaces TestName with TestInfo for unique table/output naming. |
| hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestWALInputFormat.java | Migrates to JUnit5 tags/lifecycle hooks. |
| hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTimeRangeMapRed.java | Migrates to JUnit5; simplifies assertion usage. |
| hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTableSplit.java | Migrates to JUnit5; replaces TestName with TestInfo. |
| hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.java | Migrates to JUnit5; replaces TestName with a TestInfo-derived method name. |
| hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTableRecordReader.java | Migrates to JUnit5 tags and lifecycle hooks. |
| hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTableOutputFormat.java | Migrates to JUnit5 tags/lifecycle; updates assertion argument ordering. |
| hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTableMapReduceUtil.java | Migrates to JUnit5 tags/assertions. |
| hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTableMapReduceBase.java | Migrates shared MR test base to JUnit5 lifecycle annotations. |
| hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTableMapReduce.java | Migrates to JUnit5 and replaces @Test(expected=...) with assertThrows. |
| hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYZYToEmpty.java | Migrates to JUnit5 tags. |
| hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYYYToEmpty.java | Migrates to JUnit5 tags. |
| hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYYXToEmpty.java | Migrates to JUnit5 tags. |
| hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOPPToEmpty.java | Migrates to JUnit5 tags. |
| hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOBBToQPP.java | Migrates to JUnit5 tags. |
| hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOBBToOPP.java | Migrates to JUnit5 tags. |
| hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToOPP.java | Migrates to JUnit5 tags. |
| hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToEmpty.java | Migrates to JUnit5 tags. |
| hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToBBB.java | Migrates to JUnit5 tags. |
| hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToBBA.java | Migrates to JUnit5 tags. |
| hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToAPP.java | Migrates to JUnit5 tags. |
| hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.java | Migrates base scan tests to JUnit5 lifecycle/assertions. |
| hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan.java | Migrates to JUnit5 tags. |
| hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.java | Migrates to JUnit5 tags/assertions. |
| hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTableInputFormat.java | Migrates to JUnit5; replaces @Test(expected=...) with assertThrows; updates assertion messages. |
| hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestSyncTable.java | Migrates to JUnit5; replaces TestName with TestInfo; updates assertion argument ordering. |
| hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestSimpleTotalOrderPartitioner.java | Migrates to JUnit5 tags/assertions. |
| hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestRowCounter.java | Migrates to JUnit5 tags/lifecycle/assertions. |
| hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestRoundRobinTableInputFormat.java | Migrates to JUnit5 tags/assertions. |
| hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestRegionSizeCalculator.java | Migrates to JUnit5 tags/assertions. |
| hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestMultithreadedTableMapper.java | Migrates to JUnit5 tags/lifecycle/assertions. |
| hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestMultiTableSnapshotInputFormatImpl.java | Migrates to JUnit5 tags/lifecycle/assertions. |
| hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestMultiTableSnapshotInputFormat.java | Migrates to JUnit5 tags/lifecycle. |
| hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestMultiTableInputFormatBase.java | Migrates to JUnit5; replaces TestName with TestInfo. |
| hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestMultiTableInputFormat.java | Migrates to JUnit5 lifecycle annotations. |
| hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestJarFinder.java | Migrates to JUnit5 tags/assertions. |
| hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestImportTSVWithVisibilityLabels.java | Migrates to JUnit5; replaces TestName with TestInfo. |
| hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestImportTSVWithTTLs.java | Migrates to JUnit5; replaces TestName with TestInfo. |
| hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestImportTSVWithOperationAttributes.java | Migrates to JUnit5; replaces TestName with TestInfo. |
| hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestImportTsvParser.java | Migrates to JUnit5; replaces @Test(expected=...) and try/catch with assertThrows. |
| hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestImportTsv.java | Migrates to JUnit5; replaces ExpectedException with assertThrows; updates dry-run assertions. |
| hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestHRegionPartitioner.java | Migrates to JUnit5; replaces TestName with TestInfo. |
| hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestHFileOutputFormat2WithSecurity.java | Migrates to JUnit5 tags/lifecycle. |
| hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestHFileOutputFormat2.java | Migrates to JUnit5; replaces @Ignore with @Disabled; updates assertion ordering. |
| hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestHBaseMRTestingUtility.java | Migrates to JUnit5 tags/assertions; updates assertion parameter ordering. |
| hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestHashTable.java | Migrates to JUnit5; replaces TestName with TestInfo; uses fail(...). |
| hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestGroupingTableMapper.java | Migrates to JUnit5 tags/assertions. |
| hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestCopyTable.java | Migrates to JUnit5; replaces TestName with TestInfo and adapts base helpers. |
| hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestCellCounter.java | Migrates to JUnit5; replaces TestName with TestInfo. |
| hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormatTestBase.java | Migrates shared snapshot test base to JUnit5 lifecycle/assertions. |
| hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/MultiTableInputFormatTestBase.java | Migrates shared multi-table test base to JUnit5 lifecycle/assertions. |
| hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/CopyTableToPeerClusterTestBase.java | Refactors peer-cluster CopyTable tests into a new base class using JUnit5. |
| hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/CopyTableTestBase.java | Updates shared CopyTable helpers to accept TestInfo instead of JUnit4 TestName. |
| hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapred/TestTableSnapshotInputFormat.java | Migrates mapred snapshot tests to JUnit5; replaces @Ignore with @Disabled. |
| hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapred/TestTableOutputFormatConnectionExhaust.java | Migrates to JUnit5 tags/lifecycle. |
| hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapred/TestTableMapReduceUtil.java | Migrates to JUnit5 tags/lifecycle/assertions. |
| hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapred/TestTableMapReduce.java | Migrates to JUnit5 tags/assertions. |
| hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapred/TestTableInputFormat.java | Migrates to JUnit5 tags/lifecycle; replaces @Test(expected=...) with assertThrows. |
| hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapred/TestSplitTable.java | Migrates to JUnit5 tags; replaces TestName with TestInfo. |
| hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapred/TestRowCounter.java | Migrates to JUnit5 tags/assertions. |
| hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapred/TestMultiTableSnapshotInputFormat.java | Migrates to JUnit5 tags (inherits mapreduce test logic). |
| hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapred/TestIdentityTableMap.java | Migrates to JUnit5 tags/assertions. |
| hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapred/TestGroupingTableMap.java | Migrates to JUnit5 tags/assertions. |
| hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapred/TestDriver.java | Migrates to JUnit5 tags/assertions. |
| hbase-mapreduce/pom.xml | Switches to Jupiter + Mockito JUnit5 integration and removes the vintage engine. |
Comments suppressed due to low confidence (2)
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/replication/VerifyReplicationTestBase.java:69
- This class is declared abstract but contains many
@Testmethods, and there is currently no concrete subclass (no "extends VerifyReplicationTestBase" found in hbase-mapreduce/src/test/java). JUnit Jupiter will not run tests in an abstract test class, so the VerifyReplication test suite will be silently skipped. Make this class concrete again, or add a concrete Test* class that extends it so the tests execute.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/CopyTableToPeerClusterTestBase.java:35 - This class is abstract but includes multiple
@Testmethods, and there is no concrete subclass (no "extends CopyTableToPeerClusterTestBase" found in hbase-mapreduce/src/test/java). As a result, these peer-cluster CopyTable tests will not run under JUnit5. Either make this class concrete, or introduce a concrete TestCopyTableToPeerCluster* class extending it.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestImportTsv.java
Show resolved
Hide resolved
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestHFileOutputFormat2.java
Show resolved
Hide resolved
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestHFileOutputFormat2.java
Show resolved
Hide resolved
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 79 out of 79 changed files in this pull request and generated 2 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestImportTsv.java
Show resolved
Hide resolved
...educe/src/test/java/org/apache/hadoop/hbase/mapreduce/TestImportTSVWithVisibilityLabels.java
Show resolved
Hide resolved
8578beb to
7fb4870
Compare
|
After verification, the unit tests before and after the patch are completely consistent, so let me create the backport for other branches. |
17d17fa to
dfc8f30
Compare