This is an automated email from the ASF dual-hosted git repository.

zhangduo pushed a commit to branch branch-2.6
in repository https://gitbox.apache.org/repos/asf/hbase.git

commit c5f60f843827c56a7d180a78291b39a7c60a9e9e
Author: Liu Xiao <[email protected]>
AuthorDate: Sun Mar 8 23:02:06 2026 +0800

    HBASE-29967 Upgrade hbase-backup to use junit5 (#7884)
    
    Signed-off-by: Duo Zhang <[email protected]>
    (cherry picked from commit 36ed859f671abea4328d7751d3dc41d38e23feea)
---
 hbase-backup/pom.xml                               |  5 --
 .../backup/IncrementalBackupRestoreTestBase.java   |  5 +-
 .../apache/hadoop/hbase/backup/TestBackupBase.java |  6 --
 .../hbase/backup/TestBackupBoundaryTests.java      | 44 ++++++-------
 .../hbase/backup/TestBackupCommandLineTool.java    | 20 +++---
 .../hadoop/hbase/backup/TestBackupDelete.java      | 22 +++----
 .../hbase/backup/TestBackupDeleteRestore.java      | 16 ++---
 .../hbase/backup/TestBackupDeleteWithFailures.java | 20 +++---
 .../hadoop/hbase/backup/TestBackupDescribe.java    | 16 ++---
 .../hbase/backup/TestBackupHFileCleaner.java       | 35 +++++------
 .../hadoop/hbase/backup/TestBackupManager.java     | 32 ++++------
 .../hadoop/hbase/backup/TestBackupMerge.java       | 26 +++-----
 .../hbase/backup/TestBackupMultipleDeletes.java    | 19 ++----
 .../hadoop/hbase/backup/TestBackupRepair.java      | 16 ++---
 .../hbase/backup/TestBackupRestoreExpiry.java      | 28 ++++-----
 .../TestBackupRestoreOnEmptyEnvironment.java       | 55 ++++++++--------
 .../backup/TestBackupRestoreWithModifications.java | 50 +++++++--------
 .../hadoop/hbase/backup/TestBackupShowHistory.java | 16 ++---
 .../hadoop/hbase/backup/TestBackupSmallTests.java  | 32 +++++-----
 .../hbase/backup/TestBackupStatusProgress.java     | 14 ++---
 .../hadoop/hbase/backup/TestBackupSystemTable.java | 36 +++++------
 .../hadoop/hbase/backup/TestBackupUtils.java       | 25 ++++----
 .../apache/hadoop/hbase/backup/TestFullBackup.java | 16 ++---
 .../hadoop/hbase/backup/TestFullBackupSet.java     | 18 ++----
 .../hbase/backup/TestFullBackupSetRestoreSet.java  | 32 ++++------
 .../hbase/backup/TestFullBackupWithFailures.java   | 18 ++----
 .../hadoop/hbase/backup/TestFullRestore.java       | 73 +++++++++++-----------
 .../hadoop/hbase/backup/TestHBackupFileSystem.java | 14 ++---
 .../backup/TestIncrementalBackupDeleteTable.java   | 24 +++----
 .../TestIncrementalBackupMergeWithBulkLoad.java    | 44 ++++++-------
 .../TestIncrementalBackupMergeWithFailures.java    | 34 +++++-----
 .../hbase/backup/TestIncrementalBackupRestore.java |  6 +-
 ...IncrementalBackupRestoreWithOriginalSplits.java |  2 +-
 .../backup/TestIncrementalBackupWithBulkLoad.java  | 34 +++++-----
 .../backup/TestIncrementalBackupWithDataLoss.java  | 14 ++---
 .../backup/TestIncrementalBackupWithFailures.java  | 36 +++--------
 .../hadoop/hbase/backup/TestRemoteBackup.java      | 30 ++++-----
 .../hadoop/hbase/backup/TestRemoteRestore.java     | 20 +++---
 .../hbase/backup/TestRepairAfterFailedDelete.java  | 14 ++---
 .../hbase/backup/TestRestoreBoundaryTests.java     | 14 ++---
 .../hbase/backup/TestSystemTableSnapshot.java      | 15 ++---
 .../mapreduce/TestMapReduceBackupCopyJob.java      | 16 ++---
 .../hbase/backup/master/TestBackupLogCleaner.java  | 44 ++++++-------
 43 files changed, 417 insertions(+), 639 deletions(-)

diff --git a/hbase-backup/pom.xml b/hbase-backup/pom.xml
index 2eb8025bc1b..769e3c669c3 100644
--- a/hbase-backup/pom.xml
+++ b/hbase-backup/pom.xml
@@ -177,11 +177,6 @@
       <artifactId>junit-jupiter-params</artifactId>
       <scope>test</scope>
     </dependency>
-    <dependency>
-      <groupId>org.junit.vintage</groupId>
-      <artifactId>junit-vintage-engine</artifactId>
-      <scope>test</scope>
-    </dependency>
   </dependencies>
   <build>
     <plugins>
diff --git 
a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/IncrementalBackupRestoreTestBase.java
 
b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/IncrementalBackupRestoreTestBase.java
index 3ad686514ff..7279db159f9 100644
--- 
a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/IncrementalBackupRestoreTestBase.java
+++ 
b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/IncrementalBackupRestoreTestBase.java
@@ -38,7 +38,6 @@ import org.apache.hadoop.hbase.tool.BulkLoadHFiles;
 import org.apache.hadoop.hbase.util.Bytes;
 import org.apache.hadoop.hbase.util.CommonFSUtils;
 import org.apache.hadoop.hbase.util.HFileTestUtil;
-import org.junit.jupiter.api.BeforeAll;
 
 import org.apache.hbase.thirdparty.com.google.common.base.Throwables;
 
@@ -47,10 +46,8 @@ public class IncrementalBackupRestoreTestBase extends 
TestBackupBase {
   private static final byte[] BULKLOAD_START_KEY = new byte[] { 0x00 };
   private static final byte[] BULKLOAD_END_KEY = new byte[] { Byte.MAX_VALUE };
 
-  @BeforeAll
-  public static void setUp() throws Exception {
+  static {
     provider = "multiwal";
-    TestBackupBase.setUp();
   }
 
   protected void checkThrowsCFMismatch(IOException ex, List<TableName> tables) 
{
diff --git 
a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestBackupBase.java 
b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestBackupBase.java
index 775b38a6171..fa61970ad72 100644
--- 
a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestBackupBase.java
+++ 
b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestBackupBase.java
@@ -68,9 +68,6 @@ import org.apache.hadoop.hbase.util.CommonFSUtils;
 import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;
 import org.apache.hadoop.hbase.wal.AbstractFSWALProvider;
 import org.apache.hadoop.hbase.wal.WALFactory;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
 import org.junit.jupiter.api.AfterAll;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.BeforeEach;
@@ -122,7 +119,6 @@ public class TestBackupBase {
     }
 
     @BeforeEach
-    @Before
     public void ensurePreviousBackupTestsAreCleanedUp() throws Exception {
       // Every operation here may not be necessary for any given test,
       // some often being no-ops. the goal is to help ensure atomicity
@@ -353,7 +349,6 @@ public class TestBackupBase {
    * @throws Exception if starting the mini cluster or setting up the tables 
fails
    */
   @BeforeAll
-  @BeforeClass
   public static void setUp() throws Exception {
     TEST_UTIL = new HBaseTestingUtility();
     conf1 = TEST_UTIL.getConfiguration();
@@ -371,7 +366,6 @@ public class TestBackupBase {
   }
 
   @AfterAll
-  @AfterClass
   public static void tearDown() throws Exception {
     try {
       SnapshotTestingUtils.deleteAllSnapshots(TEST_UTIL.getAdmin());
diff --git 
a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestBackupBoundaryTests.java
 
b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestBackupBoundaryTests.java
index b56a15d3a4a..b553b77ad24 100644
--- 
a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestBackupBoundaryTests.java
+++ 
b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestBackupBoundaryTests.java
@@ -17,26 +17,22 @@
  */
 package org.apache.hadoop.hbase.backup;
 
+import static org.junit.jupiter.api.Assertions.assertThrows;
+
 import java.io.IOException;
 import java.util.List;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.testclassification.LargeTests;
-import org.junit.ClassRule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import org.apache.hbase.thirdparty.com.google.common.collect.Lists;
 
-@Category(LargeTests.class)
+@Tag(LargeTests.TAG)
 public class TestBackupBoundaryTests extends TestBackupBase {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestBackupBoundaryTests.class);
-
   private static final Logger LOG = 
LoggerFactory.getLogger(TestBackupBoundaryTests.class);
 
   /**
@@ -66,33 +62,39 @@ public class TestBackupBoundaryTests extends TestBackupBase 
{
    * Verify that full backup fails on a single table that does not exist.
    * @throws Exception if doing the full backup fails
    */
-  @Test(expected = IOException.class)
+  @Test
   public void testFullBackupSingleDNE() throws Exception {
-    LOG.info("test full backup fails on a single table that does not exist");
-    List<TableName> tables = toList("tabledne");
-    fullTableBackup(tables);
+    assertThrows(IOException.class, () -> {
+      LOG.info("test full backup fails on a single table that does not exist");
+      List<TableName> tables = toList("tabledne");
+      fullTableBackup(tables);
+    });
   }
 
   /**
    * Verify that full backup fails on multiple tables that do not exist.
    * @throws Exception if doing the full backup fails
    */
-  @Test(expected = IOException.class)
+  @Test
   public void testFullBackupMultipleDNE() throws Exception {
-    LOG.info("test full backup fails on multiple tables that do not exist");
-    List<TableName> tables = toList("table1dne", "table2dne");
-    fullTableBackup(tables);
+    assertThrows(IOException.class, () -> {
+      LOG.info("test full backup fails on multiple tables that do not exist");
+      List<TableName> tables = toList("table1dne", "table2dne");
+      fullTableBackup(tables);
+    });
   }
 
   /**
    * Verify that full backup fails on tableset containing real and fake tables.
    * @throws Exception if doing the full backup fails
    */
-  @Test(expected = IOException.class)
+  @Test
   public void testFullBackupMixExistAndDNE() throws Exception {
-    LOG.info("create full backup fails on tableset containing real and fake 
table");
+    assertThrows(IOException.class, () -> {
+      LOG.info("create full backup fails on tableset containing real and fake 
table");
 
-    List<TableName> tables = toList(table1.getNameAsString(), "tabledne");
-    fullTableBackup(tables);
+      List<TableName> tables = toList(table1.getNameAsString(), "tabledne");
+      fullTableBackup(tables);
+    });
   }
 }
diff --git 
a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestBackupCommandLineTool.java
 
b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestBackupCommandLineTool.java
index 77bc9bdb9b2..76d2b4a3170 100644
--- 
a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestBackupCommandLineTool.java
+++ 
b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestBackupCommandLineTool.java
@@ -17,28 +17,22 @@
  */
 package org.apache.hadoop.hbase.backup;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.io.ByteArrayOutputStream;
 import java.io.PrintStream;
 import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.HBaseConfiguration;
 import org.apache.hadoop.hbase.testclassification.SmallTests;
 import org.apache.hadoop.util.ToolRunner;
-import org.junit.Before;
-import org.junit.ClassRule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
 
-@Category(SmallTests.class)
+@Tag(SmallTests.TAG)
 public class TestBackupCommandLineTool {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestBackupCommandLineTool.class);
-
   private final static String USAGE_DESCRIBE = "Usage: hbase backup describe 
<backup_id>";
   private final static String USAGE_CREATE = "Usage: hbase backup create";
   private final static String USAGE_HISTORY = "Usage: hbase backup history";
@@ -50,7 +44,7 @@ public class TestBackupCommandLineTool {
 
   Configuration conf;
 
-  @Before
+  @BeforeEach
   public void setUpBefore() throws Exception {
     conf = HBaseConfiguration.create();
     conf.setBoolean(BackupRestoreConstants.BACKUP_ENABLE_KEY, true);
diff --git 
a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestBackupDelete.java
 
b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestBackupDelete.java
index 785859c5280..40b179833a3 100644
--- 
a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestBackupDelete.java
+++ 
b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestBackupDelete.java
@@ -17,38 +17,32 @@
  */
 package org.apache.hadoop.hbase.backup;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
 
 import java.io.ByteArrayOutputStream;
 import java.io.PrintStream;
 import java.util.List;
 import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.backup.impl.BackupSystemTable;
 import org.apache.hadoop.hbase.testclassification.LargeTests;
 import org.apache.hadoop.hbase.util.EnvironmentEdge;
 import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;
 import org.apache.hadoop.util.ToolRunner;
-import org.junit.Assert;
-import org.junit.ClassRule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import org.apache.hbase.thirdparty.com.google.common.collect.Lists;
 import org.apache.hbase.thirdparty.com.google.common.collect.Sets;
 
-@Category(LargeTests.class)
+@Tag(LargeTests.TAG)
 public class TestBackupDelete extends TestBackupBase {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestBackupDelete.class);
-
   private static final Logger LOG = 
LoggerFactory.getLogger(TestBackupDelete.class);
 
   /**
@@ -138,7 +132,7 @@ public class TestBackupDelete extends TestBackupBase {
       assertTrue(ret == 0);
     } catch (Exception e) {
       LOG.error("failed", e);
-      Assert.fail(e.getMessage());
+      fail(e.getMessage());
     }
     String output = baos.toString();
     LOG.info(baos.toString());
@@ -154,7 +148,7 @@ public class TestBackupDelete extends TestBackupBase {
       assertTrue(ret == 0);
     } catch (Exception e) {
       LOG.error("failed", e);
-      Assert.fail(e.getMessage());
+      fail(e.getMessage());
     }
     output = baos.toString();
     LOG.info(baos.toString());
diff --git 
a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestBackupDeleteRestore.java
 
b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestBackupDeleteRestore.java
index cdf8d608ccb..00acb1afa92 100644
--- 
a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestBackupDeleteRestore.java
+++ 
b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestBackupDeleteRestore.java
@@ -17,11 +17,10 @@
  */
 package org.apache.hadoop.hbase.backup;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.util.List;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.backup.util.BackupUtils;
 import org.apache.hadoop.hbase.client.Admin;
@@ -29,21 +28,16 @@ import org.apache.hadoop.hbase.client.Delete;
 import org.apache.hadoop.hbase.client.Table;
 import org.apache.hadoop.hbase.testclassification.LargeTests;
 import org.apache.hadoop.hbase.util.Bytes;
-import org.junit.ClassRule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import org.apache.hbase.thirdparty.com.google.common.collect.Lists;
 
-@Category(LargeTests.class)
+@Tag(LargeTests.TAG)
 public class TestBackupDeleteRestore extends TestBackupBase {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestBackupDeleteRestore.class);
-
   private static final Logger LOG = 
LoggerFactory.getLogger(TestBackupDeleteRestore.class);
 
   /**
diff --git 
a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestBackupDeleteWithFailures.java
 
b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestBackupDeleteWithFailures.java
index bc1b110b672..3aa7235d2d0 100644
--- 
a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestBackupDeleteWithFailures.java
+++ 
b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestBackupDeleteWithFailures.java
@@ -17,8 +17,8 @@
  */
 package org.apache.hadoop.hbase.backup;
 
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.io.IOException;
 import java.util.ArrayList;
@@ -26,7 +26,6 @@ import java.util.List;
 import java.util.Optional;
 import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.HBaseTestingUtility;
 import org.apache.hadoop.hbase.HConstants;
 import org.apache.hadoop.hbase.TableName;
@@ -42,10 +41,9 @@ import org.apache.hadoop.hbase.coprocessor.MasterObserver;
 import org.apache.hadoop.hbase.coprocessor.ObserverContext;
 import org.apache.hadoop.hbase.testclassification.LargeTests;
 import org.apache.hadoop.util.ToolRunner;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -56,13 +54,9 @@ import 
org.apache.hbase.thirdparty.com.google.common.collect.Lists;
  * TestBackupSmallTests is where tests that don't require bring machines 
up/down should go All other
  * tests should have their own classes and extend this one
  */
-@Category(LargeTests.class)
+@Tag(LargeTests.TAG)
 public class TestBackupDeleteWithFailures extends TestBackupBase {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestBackupDeleteWithFailures.class);
-
   private static final Logger LOG = 
LoggerFactory.getLogger(TestBackupDeleteWithFailures.class);
 
   public enum Failure {
@@ -117,7 +111,7 @@ public class TestBackupDeleteWithFailures extends 
TestBackupBase {
    * Setup Cluster with appropriate configurations before running tests.
    * @throws Exception if starting the mini cluster or setting up the tables 
fails
    */
-  @BeforeClass
+  @BeforeAll
   public static void setUp() throws Exception {
     TEST_UTIL = new HBaseTestingUtility();
     conf1 = TEST_UTIL.getConfiguration();
diff --git 
a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestBackupDescribe.java
 
b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestBackupDescribe.java
index 7ce039fd666..03f7c9ca07d 100644
--- 
a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestBackupDescribe.java
+++ 
b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestBackupDescribe.java
@@ -17,34 +17,28 @@
  */
 package org.apache.hadoop.hbase.backup;
 
-import static org.junit.Assert.assertNotEquals;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertNotEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.io.ByteArrayOutputStream;
 import java.io.PrintStream;
 import java.util.List;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.backup.BackupInfo.BackupState;
 import org.apache.hadoop.hbase.backup.impl.BackupCommands;
 import org.apache.hadoop.hbase.backup.impl.BackupSystemTable;
 import org.apache.hadoop.hbase.testclassification.LargeTests;
 import org.apache.hadoop.util.ToolRunner;
-import org.junit.ClassRule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import org.apache.hbase.thirdparty.com.google.common.collect.Lists;
 
-@Category(LargeTests.class)
+@Tag(LargeTests.TAG)
 public class TestBackupDescribe extends TestBackupBase {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestBackupDescribe.class);
-
   private static final Logger LOG = 
LoggerFactory.getLogger(TestBackupDescribe.class);
 
   /**
diff --git 
a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestBackupHFileCleaner.java
 
b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestBackupHFileCleaner.java
index 3c5cff9fa63..0e8736e6f68 100644
--- 
a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestBackupHFileCleaner.java
+++ 
b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestBackupHFileCleaner.java
@@ -17,8 +17,8 @@
  */
 package org.apache.hadoop.hbase.backup;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.io.IOException;
 import java.util.Arrays;
@@ -28,31 +28,26 @@ import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.FileStatus;
 import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.HBaseTestingUtility;
 import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.backup.impl.BackupSystemTable;
 import org.apache.hadoop.hbase.testclassification.MasterTests;
 import org.apache.hadoop.hbase.testclassification.MediumTests;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import org.apache.hbase.thirdparty.com.google.common.collect.Sets;
 
-@Category({ MasterTests.class, MediumTests.class })
+@Tag(MasterTests.TAG)
+@Tag(MediumTests.TAG)
 public class TestBackupHFileCleaner {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestBackupHFileCleaner.class);
-
   private static final Logger LOG = 
LoggerFactory.getLogger(TestBackupHFileCleaner.class);
   private final static HBaseTestingUtility TEST_UTIL = new 
HBaseTestingUtility();
   private final static Configuration conf = TEST_UTIL.getConfiguration();
@@ -64,24 +59,24 @@ public class TestBackupHFileCleaner {
 
   private Path root;
 
-  @BeforeClass
+  @BeforeAll
   public static void setUpBeforeClass() throws Exception {
     conf.setBoolean(BackupRestoreConstants.BACKUP_ENABLE_KEY, true);
     TEST_UTIL.startMiniCluster(1);
     fs = FileSystem.get(conf);
   }
 
-  @AfterClass
+  @AfterAll
   public static void tearDownAfterClass() throws Exception {
     TEST_UTIL.shutdownMiniCluster();
   }
 
-  @Before
+  @BeforeEach
   public void setup() throws IOException {
     root = TEST_UTIL.getDataTestDirOnTestFS();
   }
 
-  @After
+  @AfterEach
   public void cleanup() {
     try {
       fs.delete(root, true);
@@ -139,7 +134,7 @@ public class TestBackupHFileCleaner {
   private FileStatus createFile(String fileName) throws IOException {
     Path file = new Path(root, fileName);
     fs.createNewFile(file);
-    assertTrue("Test file not created!", fs.exists(file));
+    assertTrue(fs.exists(file), "Test file not created!");
     return fs.getFileStatus(file);
   }
 }
diff --git 
a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestBackupManager.java
 
b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestBackupManager.java
index cfbc25cef3e..79601a3c830 100644
--- 
a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestBackupManager.java
+++ 
b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestBackupManager.java
@@ -17,47 +17,41 @@
  */
 package org.apache.hadoop.hbase.backup;
 
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
 
 import java.io.IOException;
 import java.util.concurrent.atomic.AtomicLongArray;
 import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.HBaseTestingUtility;
 import org.apache.hadoop.hbase.MiniHBaseCluster;
 import org.apache.hadoop.hbase.backup.impl.BackupManager;
 import org.apache.hadoop.hbase.client.Connection;
 import org.apache.hadoop.hbase.testclassification.MediumTests;
 import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import 
org.apache.hbase.thirdparty.com.google.common.util.concurrent.Uninterruptibles;
 
-@Category(MediumTests.class)
+@Tag(MediumTests.TAG)
 public class TestBackupManager {
 
   private static final Logger LOG = 
LoggerFactory.getLogger(TestBackupManager.class);
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestBackupManager.class);
-
   private static final HBaseTestingUtility UTIL = new HBaseTestingUtility();
   protected static Configuration conf = UTIL.getConfiguration();
   protected static MiniHBaseCluster cluster;
   protected static Connection conn;
   protected BackupManager backupManager;
 
-  @BeforeClass
+  @BeforeAll
   public static void setUp() throws Exception {
     conf.setBoolean(BackupRestoreConstants.BACKUP_ENABLE_KEY, true);
     BackupManager.decorateMasterConfiguration(conf);
@@ -66,19 +60,19 @@ public class TestBackupManager {
     conn = UTIL.getConnection();
   }
 
-  @AfterClass
+  @AfterAll
   public static void tearDown() throws IOException {
     if (cluster != null) {
       cluster.shutdown();
     }
   }
 
-  @Before
+  @BeforeEach
   public void before() throws IOException {
     backupManager = new BackupManager(conn, conn.getConfiguration());
   }
 
-  @After
+  @AfterEach
   public void after() {
     backupManager.close();
   }
diff --git 
a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestBackupMerge.java
 
b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestBackupMerge.java
index 38204f68e31..47dafab8985 100644
--- 
a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestBackupMerge.java
+++ 
b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestBackupMerge.java
@@ -17,12 +17,12 @@
  */
 package org.apache.hadoop.hbase.backup;
 
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.io.File;
 import java.util.List;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.backup.impl.BackupAdminImpl;
 import org.apache.hadoop.hbase.backup.util.BackupUtils;
@@ -31,22 +31,16 @@ import org.apache.hadoop.hbase.client.Connection;
 import org.apache.hadoop.hbase.client.ConnectionFactory;
 import org.apache.hadoop.hbase.client.Table;
 import org.apache.hadoop.hbase.testclassification.LargeTests;
-import org.junit.Assert;
-import org.junit.ClassRule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import org.apache.hbase.thirdparty.com.google.common.collect.Lists;
 
-@Category(LargeTests.class)
+@Tag(LargeTests.TAG)
 public class TestBackupMerge extends TestBackupBase {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestBackupMerge.class);
-
   private static final Logger LOG = 
LoggerFactory.getLogger(TestBackupMerge.class);
 
   @Test
@@ -72,13 +66,13 @@ public class TestBackupMerge extends TestBackupBase {
     Table t1 = insertIntoTable(conn, table1, famName, 1, ADD_ROWS);
     LOG.debug("writing " + ADD_ROWS + " rows to " + table1);
 
-    Assert.assertEquals(TEST_UTIL.countRows(t1), NB_ROWS_IN_BATCH + ADD_ROWS);
+    assertEquals(NB_ROWS_IN_BATCH + ADD_ROWS, TEST_UTIL.countRows(t1));
     t1.close();
     LOG.debug("written " + ADD_ROWS + " rows to " + table1);
 
     Table t2 = insertIntoTable(conn, table2, famName, 1, ADD_ROWS);
 
-    Assert.assertEquals(TEST_UTIL.countRows(t2), NB_ROWS_IN_BATCH + ADD_ROWS);
+    assertEquals(NB_ROWS_IN_BATCH + ADD_ROWS, TEST_UTIL.countRows(t2));
     t2.close();
     LOG.debug("written " + ADD_ROWS + " rows to " + table2);
 
@@ -115,12 +109,12 @@ public class TestBackupMerge extends TestBackupBase {
     LOG.debug("After incremental restore: " + hTable.getDescriptor());
     int countRows = TEST_UTIL.countRows(hTable, famName);
     LOG.debug("f1 has " + countRows + " rows");
-    Assert.assertEquals(NB_ROWS_IN_BATCH + 2 * ADD_ROWS, countRows);
+    assertEquals(NB_ROWS_IN_BATCH + 2 * ADD_ROWS, countRows);
 
     hTable.close();
 
     hTable = conn.getTable(table2_restore);
-    Assert.assertEquals(TEST_UTIL.countRows(hTable), NB_ROWS_IN_BATCH + 2 * 
ADD_ROWS);
+    assertEquals(TEST_UTIL.countRows(hTable), NB_ROWS_IN_BATCH + 2 * ADD_ROWS);
     hTable.close();
 
     admin.close();
diff --git 
a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestBackupMultipleDeletes.java
 
b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestBackupMultipleDeletes.java
index 36cecd3faf5..74064c1cedb 100644
--- 
a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestBackupMultipleDeletes.java
+++ 
b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestBackupMultipleDeletes.java
@@ -17,13 +17,12 @@
  */
 package org.apache.hadoop.hbase.backup;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.backup.impl.BackupAdminImpl;
 import org.apache.hadoop.hbase.client.Admin;
@@ -33,10 +32,8 @@ import org.apache.hadoop.hbase.client.Put;
 import org.apache.hadoop.hbase.client.Table;
 import org.apache.hadoop.hbase.testclassification.LargeTests;
 import org.apache.hadoop.hbase.util.Bytes;
-import org.junit.Assert;
-import org.junit.ClassRule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -45,13 +42,9 @@ import 
org.apache.hbase.thirdparty.com.google.common.collect.Lists;
 /**
  * Create multiple backups for two tables: table1, table2 then perform 1 delete
  */
-@Category(LargeTests.class)
+@Tag(LargeTests.TAG)
 public class TestBackupMultipleDeletes extends TestBackupBase {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestBackupMultipleDeletes.class);
-
   private static final Logger LOG = 
LoggerFactory.getLogger(TestBackupMultipleDeletes.class);
 
   @Test
@@ -73,7 +66,7 @@ public class TestBackupMultipleDeletes extends TestBackupBase 
{
       p1.addColumn(famName, qualName, Bytes.toBytes("val" + i));
       t1.put(p1);
     }
-    Assert.assertEquals(TEST_UTIL.countRows(t1), NB_ROWS_IN_BATCH * 2);
+    assertEquals(NB_ROWS_IN_BATCH * 2, TEST_UTIL.countRows(t1));
     t1.close();
     // #3 - incremental backup for table1
     tables = Lists.newArrayList(table1);
diff --git 
a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestBackupRepair.java
 
b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestBackupRepair.java
index 239e1409bdd..69cfdf15997 100644
--- 
a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestBackupRepair.java
+++ 
b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestBackupRepair.java
@@ -17,31 +17,25 @@
  */
 package org.apache.hadoop.hbase.backup;
 
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.util.List;
 import java.util.Set;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.backup.impl.BackupSystemTable;
 import org.apache.hadoop.hbase.backup.impl.TableBackupClient;
 import org.apache.hadoop.hbase.backup.impl.TableBackupClient.Stage;
 import org.apache.hadoop.hbase.testclassification.LargeTests;
 import org.apache.hadoop.util.ToolRunner;
-import org.junit.ClassRule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-@Category(LargeTests.class)
+@Tag(LargeTests.TAG)
 public class TestBackupRepair extends TestBackupBase {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestBackupRepair.class);
-
   private static final Logger LOG = 
LoggerFactory.getLogger(TestBackupRepair.class);
 
   @Test
diff --git 
a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestBackupRestoreExpiry.java
 
b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestBackupRestoreExpiry.java
index 2ef9d237efa..b84ff32de59 100644
--- 
a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestBackupRestoreExpiry.java
+++ 
b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestBackupRestoreExpiry.java
@@ -17,9 +17,10 @@
  */
 package org.apache.hadoop.hbase.backup;
 
-import static org.junit.Assert.assertNotEquals;
-import static org.junit.Assert.assertThrows;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.io.IOException;
 import java.util.ArrayList;
@@ -28,7 +29,6 @@ import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.LocatedFileStatus;
 import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.fs.RemoteIterator;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.HBaseTestingUtility;
 import org.apache.hadoop.hbase.HConstants;
 import org.apache.hadoop.hbase.TableName;
@@ -47,22 +47,16 @@ import 
org.apache.hadoop.hbase.testclassification.LargeTests;
 import org.apache.hadoop.hbase.util.Bytes;
 import org.apache.hadoop.hbase.util.EnvironmentEdge;
 import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;
-import org.junit.Assert;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
 
 import org.apache.hbase.thirdparty.com.google.common.collect.Lists;
 
-@Category(LargeTests.class)
+@Tag(LargeTests.TAG)
 public class TestBackupRestoreExpiry extends TestBackupBase {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestBackupRestoreExpiry.class);
-
-  @BeforeClass
+  @BeforeAll
   public static void setUp() throws Exception {
     TEST_UTIL = new HBaseTestingUtility();
     conf1 = TEST_UTIL.getConfiguration();
@@ -180,8 +174,8 @@ public class TestBackupRestoreExpiry extends TestBackupBase 
{
     List<LocatedFileStatus> postRestoreBackupFiles = getBackupFiles();
 
     // Check that the backup files are the same before and after the restore 
process
-    Assert.assertEquals(postRestoreBackupFiles, preRestoreBackupFiles);
-    Assert.assertEquals(TEST_UTIL.countRows(table1_restore), NB_ROWS_IN_BATCH);
+    assertEquals(postRestoreBackupFiles, preRestoreBackupFiles);
+    assertEquals(NB_ROWS_IN_BATCH, TEST_UTIL.countRows(table1_restore));
 
     int ROWS_TO_ADD = 1_000;
     // different IDs so that rows don't overlap
diff --git 
a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestBackupRestoreOnEmptyEnvironment.java
 
b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestBackupRestoreOnEmptyEnvironment.java
index ac9d275a57f..ee89aae91e3 100644
--- 
a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestBackupRestoreOnEmptyEnvironment.java
+++ 
b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestBackupRestoreOnEmptyEnvironment.java
@@ -22,8 +22,8 @@ import static 
org.apache.hadoop.hbase.backup.BackupTestUtil.enableBackup;
 import static org.apache.hadoop.hbase.backup.BackupTestUtil.verifyBackup;
 import static org.apache.hadoop.hbase.backup.BackupType.FULL;
 import static org.apache.hadoop.hbase.backup.BackupType.INCREMENTAL;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.io.IOException;
 import java.time.Instant;
@@ -31,12 +31,12 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
+import java.util.stream.Stream;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.hbase.Cell;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
-import org.apache.hadoop.hbase.HBaseCommonTestingUtility;
 import org.apache.hadoop.hbase.HBaseConfiguration;
+import org.apache.hadoop.hbase.HBaseParameterizedTestTemplate;
 import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.backup.impl.BackupAdminImpl;
 import org.apache.hadoop.hbase.client.Admin;
@@ -52,36 +52,33 @@ import 
org.apache.hadoop.hbase.testclassification.LargeTests;
 import org.apache.hadoop.hbase.testing.TestingHBaseCluster;
 import org.apache.hadoop.hbase.testing.TestingHBaseClusterOption;
 import org.apache.hadoop.hbase.util.Bytes;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.TestTemplate;
+import org.junit.jupiter.params.provider.Arguments;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-@Category(LargeTests.class)
-@RunWith(Parameterized.class)
+@Tag(LargeTests.TAG)
+@HBaseParameterizedTestTemplate(name = "{index}: restoreToOtherTable={0}")
 public class TestBackupRestoreOnEmptyEnvironment {
 
   private static final Logger LOG =
     LoggerFactory.getLogger(TestBackupRestoreOnEmptyEnvironment.class);
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestBackupRestoreOnEmptyEnvironment.class);
+  public boolean restoreToOtherTable;
 
-  @Parameterized.Parameters(name = "{index}: restoreToOtherTable={0}")
-  public static Iterable<Object[]> data() {
-    return HBaseCommonTestingUtility.BOOLEAN_PARAMETERIZED;
+  public TestBackupRestoreOnEmptyEnvironment(boolean restoreToOtherTable) {
+    this.restoreToOtherTable = restoreToOtherTable;
+  }
+
+  public static Stream<Arguments> parameters() {
+    return Stream.of(Arguments.of(true), Arguments.of(false));
   }
 
-  @Parameterized.Parameter(0)
-  public boolean restoreToOtherTable;
   private TableName sourceTable;
   private TableName targetTable;
 
@@ -89,7 +86,7 @@ public class TestBackupRestoreOnEmptyEnvironment {
   private static Path BACKUP_ROOT_DIR;
   private static final byte[] COLUMN_FAMILY = Bytes.toBytes("0");
 
-  @BeforeClass
+  @BeforeAll
   public static void beforeClass() throws Exception {
     Configuration conf = HBaseConfiguration.create();
     enableBackup(conf);
@@ -98,12 +95,12 @@ public class TestBackupRestoreOnEmptyEnvironment {
     BACKUP_ROOT_DIR = new Path(new Path(conf.get("fs.defaultFS")), new 
Path("/backupIT"));
   }
 
-  @AfterClass
+  @AfterAll
   public static void afterClass() throws Exception {
     cluster.stop();
   }
 
-  @Before
+  @BeforeEach
   public void setUp() throws Exception {
     sourceTable = TableName.valueOf("table");
     targetTable = TableName.valueOf("another-table");
@@ -111,12 +108,12 @@ public class TestBackupRestoreOnEmptyEnvironment {
     createTable(targetTable);
   }
 
-  @After
+  @AfterEach
   public void removeTables() throws Exception {
     deleteTables();
   }
 
-  @Test
+  @TestTemplate
   public void testRestoreToCorrectTable() throws Exception {
     Instant timestamp = Instant.now().minusSeconds(10);
 
@@ -140,7 +137,7 @@ public class TestBackupRestoreOnEmptyEnvironment {
 
   }
 
-  @Test
+  @TestTemplate
   public void testRestoreCorrectTableForIncremental() throws Exception {
     Instant timestamp = Instant.now().minusSeconds(10);
 
diff --git 
a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestBackupRestoreWithModifications.java
 
b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestBackupRestoreWithModifications.java
index b9af837e46f..3b20d3624a5 100644
--- 
a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestBackupRestoreWithModifications.java
+++ 
b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestBackupRestoreWithModifications.java
@@ -21,9 +21,9 @@ import static 
org.apache.hadoop.hbase.backup.BackupInfo.BackupState.COMPLETE;
 import static org.apache.hadoop.hbase.backup.BackupTestUtil.enableBackup;
 import static org.apache.hadoop.hbase.backup.BackupTestUtil.verifyBackup;
 import static org.apache.hadoop.hbase.backup.BackupType.FULL;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.io.IOException;
 import java.nio.ByteBuffer;
@@ -33,13 +33,13 @@ import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
 import java.util.UUID;
+import java.util.stream.Stream;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.hbase.Cell;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
-import org.apache.hadoop.hbase.HBaseCommonTestingUtility;
 import org.apache.hadoop.hbase.HBaseConfiguration;
+import org.apache.hadoop.hbase.HBaseParameterizedTestTemplate;
 import org.apache.hadoop.hbase.KeyValue;
 import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.backup.impl.BackupAdminImpl;
@@ -59,35 +59,31 @@ import org.apache.hadoop.hbase.testing.TestingHBaseCluster;
 import org.apache.hadoop.hbase.testing.TestingHBaseClusterOption;
 import org.apache.hadoop.hbase.tool.BulkLoadHFiles;
 import org.apache.hadoop.hbase.util.Bytes;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.TestTemplate;
+import org.junit.jupiter.params.provider.Arguments;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-@Category(LargeTests.class)
-@RunWith(Parameterized.class)
+@Tag(LargeTests.TAG)
+@HBaseParameterizedTestTemplate(name = "{index}: useBulkLoad={0}")
 public class TestBackupRestoreWithModifications {
 
   private static final Logger LOG =
     LoggerFactory.getLogger(TestBackupRestoreWithModifications.class);
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestBackupRestoreWithModifications.class);
+  public boolean useBulkLoad;
 
-  @Parameterized.Parameters(name = "{index}: useBulkLoad={0}")
-  public static Iterable<Object[]> data() {
-    return HBaseCommonTestingUtility.BOOLEAN_PARAMETERIZED;
+  public TestBackupRestoreWithModifications(boolean useBulkLoad) {
+    this.useBulkLoad = useBulkLoad;
   }
 
-  @Parameterized.Parameter(0)
-  public boolean useBulkLoad;
+  public static Stream<Arguments> parameters() {
+    return Stream.of(Arguments.of(true), Arguments.of(false));
+  }
 
   private TableName sourceTable;
   private TableName targetTable;
@@ -97,7 +93,7 @@ public class TestBackupRestoreWithModifications {
   private static final Path BACKUP_ROOT_DIR = new Path("backupIT");
   private static final byte[] COLUMN_FAMILY = Bytes.toBytes("0");
 
-  @BeforeClass
+  @BeforeAll
   public static void beforeClass() throws Exception {
     Configuration conf = HBaseConfiguration.create();
     enableBackup(conf);
@@ -105,12 +101,12 @@ public class TestBackupRestoreWithModifications {
     cluster.start();
   }
 
-  @AfterClass
+  @AfterAll
   public static void afterClass() throws Exception {
     cluster.stop();
   }
 
-  @Before
+  @BeforeEach
   public void setUp() throws Exception {
     sourceTable = TableName.valueOf("table-" + useBulkLoad);
     targetTable = TableName.valueOf("another-table-" + useBulkLoad);
@@ -119,7 +115,7 @@ public class TestBackupRestoreWithModifications {
     createTable(targetTable);
   }
 
-  @Test
+  @TestTemplate
   public void testModificationsOnTable() throws Exception {
     Instant timestamp = Instant.now();
 
diff --git 
a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestBackupShowHistory.java
 
b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestBackupShowHistory.java
index 6195171d90c..0c1870cdc71 100644
--- 
a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestBackupShowHistory.java
+++ 
b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestBackupShowHistory.java
@@ -17,32 +17,26 @@
  */
 package org.apache.hadoop.hbase.backup;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.io.ByteArrayOutputStream;
 import java.io.PrintStream;
 import java.util.List;
 import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.backup.util.BackupUtils;
 import org.apache.hadoop.hbase.testclassification.LargeTests;
 import org.apache.hadoop.util.ToolRunner;
-import org.junit.ClassRule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import org.apache.hbase.thirdparty.com.google.common.collect.Lists;
 
-@Category(LargeTests.class)
+@Tag(LargeTests.TAG)
 public class TestBackupShowHistory extends TestBackupBase {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestBackupShowHistory.class);
-
   private static final Logger LOG = 
LoggerFactory.getLogger(TestBackupShowHistory.class);
 
   /**
diff --git 
a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestBackupSmallTests.java
 
b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestBackupSmallTests.java
index 5add9412014..361c3428282 100644
--- 
a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestBackupSmallTests.java
+++ 
b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestBackupSmallTests.java
@@ -17,25 +17,21 @@
  */
 package org.apache.hadoop.hbase.backup;
 
+import static org.junit.jupiter.api.Assertions.assertThrows;
+
 import java.io.IOException;
 import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.fs.permission.FsPermission;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.testclassification.MediumTests;
 import org.apache.hadoop.hdfs.DFSTestUtil;
 import org.apache.hadoop.security.UserGroupInformation;
-import org.junit.ClassRule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
 
-@Category(MediumTests.class)
+@Tag(MediumTests.TAG)
 public class TestBackupSmallTests extends TestBackupBase {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestBackupSmallTests.class);
-
   private static final UserGroupInformation DIANA =
     UserGroupInformation.createUserForTesting("diana", new String[] {});
   private static final String PERMISSION_TEST_PATH = Path.SEPARATOR + 
"permissionUT";
@@ -47,14 +43,16 @@ public class TestBackupSmallTests extends TestBackupBase {
     fs.mkdirs(path);
   }
 
-  @Test(expected = IOException.class)
+  @Test
   public void testBackupPathIsNotAccessible() throws Exception {
-    Path path = new Path(PERMISSION_TEST_PATH);
-    FileSystem rootFs = 
FileSystem.get(TEST_UTIL.getConnection().getConfiguration());
-    rootFs.mkdirs(path.getParent());
-    rootFs.setPermission(path.getParent(), 
FsPermission.createImmutable((short) 000));
-    FileSystem fs =
-      DFSTestUtil.getFileSystemAs(DIANA, 
TEST_UTIL.getConnection().getConfiguration());
-    fs.mkdirs(path);
+    assertThrows(IOException.class, () -> {
+      Path path = new Path(PERMISSION_TEST_PATH);
+      FileSystem rootFs = 
FileSystem.get(TEST_UTIL.getConnection().getConfiguration());
+      rootFs.mkdirs(path.getParent());
+      rootFs.setPermission(path.getParent(), 
FsPermission.createImmutable((short) 000));
+      FileSystem fs =
+        DFSTestUtil.getFileSystemAs(DIANA, 
TEST_UTIL.getConnection().getConfiguration());
+      fs.mkdirs(path);
+    });
   }
 }
diff --git 
a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestBackupStatusProgress.java
 
b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestBackupStatusProgress.java
index 1a1e5dbf1cc..ecf2915f824 100644
--- 
a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestBackupStatusProgress.java
+++ 
b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestBackupStatusProgress.java
@@ -17,31 +17,25 @@
  */
 package org.apache.hadoop.hbase.backup;
 
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.io.ByteArrayOutputStream;
 import java.io.PrintStream;
 import java.util.List;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.backup.BackupInfo.BackupState;
 import org.apache.hadoop.hbase.testclassification.LargeTests;
 import org.apache.hadoop.util.ToolRunner;
-import org.junit.ClassRule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import org.apache.hbase.thirdparty.com.google.common.collect.Lists;
 
-@Category(LargeTests.class)
+@Tag(LargeTests.TAG)
 public class TestBackupStatusProgress extends TestBackupBase {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestBackupStatusProgress.class);
-
   private static final Logger LOG = 
LoggerFactory.getLogger(TestBackupStatusProgress.class);
 
   /**
diff --git 
a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestBackupSystemTable.java
 
b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestBackupSystemTable.java
index aacf59f5636..1f7444931f5 100644
--- 
a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestBackupSystemTable.java
+++ 
b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestBackupSystemTable.java
@@ -17,10 +17,10 @@
  */
 package org.apache.hadoop.hbase.backup;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.io.IOException;
 import java.util.ArrayList;
@@ -34,7 +34,6 @@ import java.util.Map;
 import java.util.Set;
 import java.util.TreeSet;
 import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.HBaseTestingUtility;
 import org.apache.hadoop.hbase.MiniHBaseCluster;
 import org.apache.hadoop.hbase.TableName;
@@ -45,31 +44,26 @@ import org.apache.hadoop.hbase.client.Admin;
 import org.apache.hadoop.hbase.client.Connection;
 import org.apache.hadoop.hbase.testclassification.LargeTests;
 import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
 
 /**
  * Test cases for backup system table API
  */
-@Category(LargeTests.class)
+@Tag(LargeTests.TAG)
 public class TestBackupSystemTable {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestBackupSystemTable.class);
-
   private static final HBaseTestingUtility UTIL = new HBaseTestingUtility();
   protected static Configuration conf = UTIL.getConfiguration();
   protected static MiniHBaseCluster cluster;
   protected static Connection conn;
   protected BackupSystemTable table;
 
-  @BeforeClass
+  @BeforeAll
   public static void setUp() throws Exception {
     conf.setBoolean(BackupRestoreConstants.BACKUP_ENABLE_KEY, true);
     BackupManager.decorateMasterConfiguration(conf);
@@ -78,12 +72,12 @@ public class TestBackupSystemTable {
     conn = UTIL.getConnection();
   }
 
-  @Before
+  @BeforeEach
   public void before() throws IOException {
     table = new BackupSystemTable(conn);
   }
 
-  @After
+  @AfterEach
   public void after() {
     if (table != null) {
       table.close();
@@ -504,7 +498,7 @@ public class TestBackupSystemTable {
     return list;
   }
 
-  @AfterClass
+  @AfterAll
   public static void tearDown() throws IOException {
     if (cluster != null) {
       cluster.shutdown();
diff --git 
a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestBackupUtils.java
 
b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestBackupUtils.java
index d4e6900fb28..c29af366ae9 100644
--- 
a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestBackupUtils.java
+++ 
b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestBackupUtils.java
@@ -17,12 +17,15 @@
  */
 package org.apache.hadoop.hbase.backup;
 
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
 import java.io.IOException;
 import java.security.PrivilegedAction;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.HBaseTestingUtility;
 import org.apache.hadoop.hbase.HConstants;
 import org.apache.hadoop.hbase.ServerName;
@@ -33,18 +36,14 @@ import org.apache.hadoop.hbase.util.Addressing;
 import org.apache.hadoop.hbase.util.CommonFSUtils;
 import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;
 import org.apache.hadoop.security.UserGroupInformation;
-import org.junit.Assert;
-import org.junit.ClassRule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-@Category(SmallTests.class)
+@Tag(SmallTests.TAG)
 public class TestBackupUtils {
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestBackupUtils.class);
+
   private static final Logger LOG = 
LoggerFactory.getLogger(TestBackupUtils.class);
 
   protected static HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility();
@@ -82,7 +81,7 @@ public class TestBackupUtils {
       }
     });
     // Make sure the directory is in foo1234's home directory
-    
Assert.assertTrue(bulkOutputDir.toString().startsWith(fooHomeDirectory.toString()));
+    
assertTrue(bulkOutputDir.toString().startsWith(fooHomeDirectory.toString()));
   }
 
   @Test
@@ -99,18 +98,18 @@ public class TestBackupUtils {
 
       Path testOldWalPath = new Path(oldLogDir,
         serverName + BackupUtils.LOGNAME_SEPARATOR + 
EnvironmentEdgeManager.currentTime());
-      Assert.assertEquals(host + Addressing.HOSTNAME_PORT_SEPARATOR + port,
+      assertEquals(host + Addressing.HOSTNAME_PORT_SEPARATOR + port,
         BackupUtils.parseHostFromOldLog(testOldWalPath));
 
       Path testMasterWalPath =
         new Path(oldLogDir, testOldWalPath.getName() + 
MasterRegionFactory.ARCHIVED_WAL_SUFFIX);
-      Assert.assertNull(BackupUtils.parseHostFromOldLog(testMasterWalPath));
+      assertNull(BackupUtils.parseHostFromOldLog(testMasterWalPath));
 
       // org.apache.hadoop.hbase.wal.BoundedGroupingStrategy does this
       Path testOldWalWithRegionGroupingPath = new Path(oldLogDir,
         serverName + BackupUtils.LOGNAME_SEPARATOR + serverName + 
BackupUtils.LOGNAME_SEPARATOR
           + "regiongroup-0" + BackupUtils.LOGNAME_SEPARATOR + 
EnvironmentEdgeManager.currentTime());
-      Assert.assertEquals(host + Addressing.HOSTNAME_PORT_SEPARATOR + port,
+      assertEquals(host + Addressing.HOSTNAME_PORT_SEPARATOR + port,
         BackupUtils.parseHostFromOldLog(testOldWalWithRegionGroupingPath));
     }
 
diff --git 
a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestFullBackup.java 
b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestFullBackup.java
index ba09817fcde..ca0c0338ba7 100644
--- 
a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestFullBackup.java
+++ 
b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestFullBackup.java
@@ -17,32 +17,26 @@
  */
 package org.apache.hadoop.hbase.backup;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.util.HashSet;
 import java.util.List;
 import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.backup.impl.BackupManifest;
 import org.apache.hadoop.hbase.backup.impl.BackupSystemTable;
 import org.apache.hadoop.hbase.testclassification.LargeTests;
 import org.apache.hadoop.util.ToolRunner;
-import org.junit.ClassRule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import org.apache.hbase.thirdparty.com.google.common.collect.Sets;
 
-@Category(LargeTests.class)
+@Tag(LargeTests.TAG)
 public class TestFullBackup extends TestBackupBase {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestFullBackup.class);
-
   private static final Logger LOG = 
LoggerFactory.getLogger(TestFullBackup.class);
 
   @Test
diff --git 
a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestFullBackupSet.java
 
b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestFullBackupSet.java
index af6ce077e05..6a598f40d7a 100644
--- 
a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestFullBackupSet.java
+++ 
b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestFullBackupSet.java
@@ -17,30 +17,24 @@
  */
 package org.apache.hadoop.hbase.backup;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.util.List;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.backup.impl.BackupSystemTable;
 import org.apache.hadoop.hbase.client.Admin;
 import org.apache.hadoop.hbase.testclassification.LargeTests;
 import org.apache.hadoop.util.ToolRunner;
-import org.junit.ClassRule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-@Category(LargeTests.class)
+@Tag(LargeTests.TAG)
 public class TestFullBackupSet extends TestBackupBase {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestFullBackupSet.class);
-
   private static final Logger LOG = 
LoggerFactory.getLogger(TestFullBackupSet.class);
 
   /**
diff --git 
a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestFullBackupSetRestoreSet.java
 
b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestFullBackupSetRestoreSet.java
index 98e05cc5a12..b248bd8c123 100644
--- 
a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestFullBackupSetRestoreSet.java
+++ 
b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestFullBackupSetRestoreSet.java
@@ -17,30 +17,24 @@
  */
 package org.apache.hadoop.hbase.backup;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.util.List;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.backup.impl.BackupSystemTable;
 import org.apache.hadoop.hbase.client.Admin;
 import org.apache.hadoop.hbase.testclassification.LargeTests;
 import org.apache.hadoop.util.ToolRunner;
-import org.junit.ClassRule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-@Category(LargeTests.class)
+@Tag(LargeTests.TAG)
 public class TestFullBackupSetRestoreSet extends TestBackupBase {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestFullBackupSetRestoreSet.class);
-
   private static final Logger LOG = 
LoggerFactory.getLogger(TestFullBackupSetRestoreSet.class);
 
   @Test
@@ -55,15 +49,15 @@ public class TestFullBackupSetRestoreSet extends 
TestBackupBase {
       List<TableName> names = table.describeBackupSet(name);
 
       assertNotNull(names);
-      assertTrue(names.size() == 1);
+      assertEquals(1, names.size());
       assertTrue(names.get(0).equals(table1));
 
       String[] args = new String[] { "create", "full", BACKUP_ROOT_DIR, "-s", 
name };
       // Run backup
       int ret = ToolRunner.run(conf1, new BackupDriver(), args);
-      assertTrue(ret == 0);
+      assertEquals(0, ret);
       List<BackupInfo> backups = table.getBackupHistory();
-      assertTrue(backups.size() == 1);
+      assertEquals(1, backups.size());
       String backupId = backups.get(0).getBackupId();
       assertTrue(checkSucceeded(backupId));
 
@@ -74,7 +68,7 @@ public class TestFullBackupSetRestoreSet extends 
TestBackupBase {
         table1_restore.getNameAsString(), "-o" };
       // Run backup
       ret = ToolRunner.run(conf1, new RestoreDriver(), args);
-      assertTrue(ret == 0);
+      assertEquals(0, ret);
       Admin hba = TEST_UTIL.getAdmin();
       assertTrue(hba.tableExists(table1_restore));
       // Verify number of rows in both tables
@@ -97,13 +91,13 @@ public class TestFullBackupSetRestoreSet extends 
TestBackupBase {
       List<TableName> names = table.describeBackupSet(name);
 
       assertNotNull(names);
-      assertTrue(names.size() == 1);
+      assertEquals(1, names.size());
       assertTrue(names.get(0).equals(table1));
 
       String[] args = new String[] { "create", "full", BACKUP_ROOT_DIR, "-s", 
name };
       // Run backup
       int ret = ToolRunner.run(conf1, new BackupDriver(), args);
-      assertTrue(ret == 0);
+      assertEquals(0, ret);
       List<BackupInfo> backups = table.getBackupHistory();
       String backupId = backups.get(0).getBackupId();
       assertTrue(checkSucceeded(backupId));
@@ -116,7 +110,7 @@ public class TestFullBackupSetRestoreSet extends 
TestBackupBase {
       args = new String[] { BACKUP_ROOT_DIR, backupId, "-s", name, "-o" };
       // Run backup
       ret = ToolRunner.run(conf1, new RestoreDriver(), args);
-      assertTrue(ret == 0);
+      assertEquals(0, ret);
       Admin hba = TEST_UTIL.getAdmin();
       assertTrue(hba.tableExists(table1));
       // Verify number of rows in both tables
diff --git 
a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestFullBackupWithFailures.java
 
b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestFullBackupWithFailures.java
index 1536fd1841f..6ffd09644c2 100644
--- 
a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestFullBackupWithFailures.java
+++ 
b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestFullBackupWithFailures.java
@@ -17,31 +17,25 @@
  */
 package org.apache.hadoop.hbase.backup;
 
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.util.List;
 import java.util.Set;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.backup.impl.BackupSystemTable;
 import org.apache.hadoop.hbase.backup.impl.TableBackupClient;
 import org.apache.hadoop.hbase.backup.impl.TableBackupClient.Stage;
 import org.apache.hadoop.hbase.testclassification.LargeTests;
 import org.apache.hadoop.util.ToolRunner;
-import org.junit.ClassRule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-@Category(LargeTests.class)
+@Tag(LargeTests.TAG)
 public class TestFullBackupWithFailures extends TestBackupBase {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestFullBackupWithFailures.class);
-
   private static final Logger LOG = 
LoggerFactory.getLogger(TestFullBackupWithFailures.class);
 
   @Test
@@ -75,7 +69,7 @@ public class TestFullBackupWithFailures extends 
TestBackupBase {
         assertFalse(checkSucceeded(backupId));
       }
       Set<TableName> tables = 
table.getIncrementalBackupTableSet(BACKUP_ROOT_DIR);
-      assertTrue(tables.size() == 0);
+      assertTrue(tables.isEmpty());
     }
   }
 
diff --git 
a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestFullRestore.java
 
b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestFullRestore.java
index d16d7af7501..1eb26a9b82a 100644
--- 
a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestFullRestore.java
+++ 
b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestFullRestore.java
@@ -17,34 +17,29 @@
  */
 package org.apache.hadoop.hbase.backup;
 
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.io.IOException;
 import java.util.List;
 import org.apache.commons.lang3.StringUtils;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.backup.util.BackupUtils;
 import org.apache.hadoop.hbase.client.Admin;
 import org.apache.hadoop.hbase.client.Table;
 import org.apache.hadoop.hbase.testclassification.LargeTests;
 import org.apache.hadoop.util.ToolRunner;
-import org.junit.ClassRule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import org.apache.hbase.thirdparty.com.google.common.collect.Lists;
 
-@Category(LargeTests.class)
+@Tag(LargeTests.TAG)
 public class TestFullRestore extends TestBackupBase {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestFullRestore.class);
-
   private static final Logger LOG = 
LoggerFactory.getLogger(TestFullRestore.class);
 
   /**
@@ -293,20 +288,22 @@ public class TestFullRestore extends TestBackupBase {
    * Verify that restore fails on a single table that does not exist.
    * @throws Exception if doing the backup or restoring it fails
    */
-  @Test(expected = IOException.class)
+  @Test
   public void testFullRestoreSingleDNE() throws Exception {
-    LOG.info("test restore fails on a single table that does not exist");
-    List<TableName> tables = Lists.newArrayList(table1);
-    String backupId = fullTableBackup(tables);
-    assertTrue(checkSucceeded(backupId));
-
-    LOG.info("backup complete");
-
-    TableName[] tableset = new TableName[] { TableName.valueOf("faketable") };
-    TableName[] tablemap = new TableName[] { table1_restore };
-    BackupAdmin client = getBackupAdmin();
-    client.restore(BackupUtils.createRestoreRequest(BACKUP_ROOT_DIR, backupId, 
false, tableset,
-      tablemap, false));
+    assertThrows(IOException.class, () -> {
+      LOG.info("test restore fails on a single table that does not exist");
+      List<TableName> tables = Lists.newArrayList(table1);
+      String backupId = fullTableBackup(tables);
+      assertTrue(checkSucceeded(backupId));
+
+      LOG.info("backup complete");
+
+      TableName[] tableset = new TableName[] { TableName.valueOf("faketable") 
};
+      TableName[] tablemap = new TableName[] { table1_restore };
+      BackupAdmin client = getBackupAdmin();
+      client.restore(BackupUtils.createRestoreRequest(BACKUP_ROOT_DIR, 
backupId, false, tableset,
+        tablemap, false));
+    });
   }
 
   /**
@@ -335,20 +332,22 @@ public class TestFullRestore extends TestBackupBase {
    * Verify that restore fails on multiple tables that do not exist.
    * @throws Exception if doing the backup or restoring it fails
    */
-  @Test(expected = IOException.class)
+  @Test
   public void testFullRestoreMultipleDNE() throws Exception {
-    LOG.info("test restore fails on multiple tables that do not exist");
-
-    List<TableName> tables = Lists.newArrayList(table2, table3);
-    String backupId = fullTableBackup(tables);
-    assertTrue(checkSucceeded(backupId));
-
-    TableName[] restore_tableset =
-      new TableName[] { TableName.valueOf("faketable1"), 
TableName.valueOf("faketable2") };
-    TableName[] tablemap = new TableName[] { table2_restore, table3_restore };
-    BackupAdmin client = getBackupAdmin();
-    client.restore(BackupUtils.createRestoreRequest(BACKUP_ROOT_DIR, backupId, 
false,
-      restore_tableset, tablemap, false));
+    assertThrows(IOException.class, () -> {
+      LOG.info("test restore fails on multiple tables that do not exist");
+
+      List<TableName> tables = Lists.newArrayList(table2, table3);
+      String backupId = fullTableBackup(tables);
+      assertTrue(checkSucceeded(backupId));
+
+      TableName[] restore_tableset =
+        new TableName[] { TableName.valueOf("faketable1"), 
TableName.valueOf("faketable2") };
+      TableName[] tablemap = new TableName[] { table2_restore, table3_restore 
};
+      BackupAdmin client = getBackupAdmin();
+      client.restore(BackupUtils.createRestoreRequest(BACKUP_ROOT_DIR, 
backupId, false,
+        restore_tableset, tablemap, false));
+    });
   }
 
   /**
diff --git 
a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestHBackupFileSystem.java
 
b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestHBackupFileSystem.java
index 3bdc2f62079..4939f12eb55 100644
--- 
a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestHBackupFileSystem.java
+++ 
b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestHBackupFileSystem.java
@@ -17,24 +17,18 @@
  */
 package org.apache.hadoop.hbase.backup;
 
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
 import java.io.IOException;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.testclassification.SmallTests;
-import org.junit.ClassRule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
 
-@Category(SmallTests.class)
+@Tag(SmallTests.TAG)
 public class TestHBackupFileSystem {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestHBackupFileSystem.class);
-
   private static final Path ROOT_DIR = new Path("/backup/root");
   private static final String BACKUP_ID = "123";
 
diff --git 
a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestIncrementalBackupDeleteTable.java
 
b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestIncrementalBackupDeleteTable.java
index a5eec87fb06..5bd69f57a82 100644
--- 
a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestIncrementalBackupDeleteTable.java
+++ 
b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestIncrementalBackupDeleteTable.java
@@ -17,10 +17,10 @@
  */
 package org.apache.hadoop.hbase.backup;
 
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.util.List;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.backup.impl.BackupAdminImpl;
 import org.apache.hadoop.hbase.backup.util.BackupUtils;
@@ -31,10 +31,8 @@ import org.apache.hadoop.hbase.client.Put;
 import org.apache.hadoop.hbase.client.Table;
 import org.apache.hadoop.hbase.testclassification.LargeTests;
 import org.apache.hadoop.hbase.util.Bytes;
-import org.junit.Assert;
-import org.junit.ClassRule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -44,13 +42,9 @@ import 
org.apache.hbase.thirdparty.com.google.common.collect.Lists;
  * 1. Create table t1, t2 2. Load data to t1, t2 3 Full backup t1, t2 4 Delete 
t2 5 Load data to t1
  * 6 Incremental backup t1
  */
-@Category(LargeTests.class)
+@Tag(LargeTests.TAG)
 public class TestIncrementalBackupDeleteTable extends TestBackupBase {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestIncrementalBackupDeleteTable.class);
-
   private static final Logger LOG = 
LoggerFactory.getLogger(TestIncrementalBackupDeleteTable.class);
 
   // implement all test cases in 1 test since incremental backup/restore has 
dependencies
@@ -78,7 +72,7 @@ public class TestIncrementalBackupDeleteTable extends 
TestBackupBase {
       t1.put(p1);
     }
 
-    Assert.assertEquals(TEST_UTIL.countRows(t1), NB_ROWS_IN_BATCH * 2);
+    assertEquals(TEST_UTIL.countRows(t1), NB_ROWS_IN_BATCH * 2);
     t1.close();
 
     // Delete table table2
@@ -106,11 +100,11 @@ public class TestIncrementalBackupDeleteTable extends 
TestBackupBase {
 
     // #5.2 - checking row count of tables for full restore
     Table hTable = conn.getTable(table1_restore);
-    Assert.assertEquals(TEST_UTIL.countRows(hTable), NB_ROWS_IN_BATCH);
+    assertEquals(TEST_UTIL.countRows(hTable), NB_ROWS_IN_BATCH);
     hTable.close();
 
     hTable = conn.getTable(table2_restore);
-    Assert.assertEquals(TEST_UTIL.countRows(hTable), NB_ROWS_IN_BATCH);
+    assertEquals(TEST_UTIL.countRows(hTable), NB_ROWS_IN_BATCH);
     hTable.close();
 
     // #6 - restore incremental backup for table1
@@ -120,7 +114,7 @@ public class TestIncrementalBackupDeleteTable extends 
TestBackupBase {
       tablesRestoreIncMultiple, tablesMapIncMultiple, true));
 
     hTable = conn.getTable(table1_restore);
-    Assert.assertEquals(TEST_UTIL.countRows(hTable), NB_ROWS_IN_BATCH * 2);
+    assertEquals(TEST_UTIL.countRows(hTable), NB_ROWS_IN_BATCH * 2);
     hTable.close();
     admin.close();
     conn.close();
diff --git 
a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestIncrementalBackupMergeWithBulkLoad.java
 
b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestIncrementalBackupMergeWithBulkLoad.java
index 583316fc360..4d4076f28c0 100644
--- 
a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestIncrementalBackupMergeWithBulkLoad.java
+++ 
b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestIncrementalBackupMergeWithBulkLoad.java
@@ -34,13 +34,13 @@ import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
 import java.util.UUID;
+import java.util.stream.Stream;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.hbase.Cell;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
-import org.apache.hadoop.hbase.HBaseCommonTestingUtility;
 import org.apache.hadoop.hbase.HBaseConfiguration;
+import org.apache.hadoop.hbase.HBaseParameterizedTestTemplate;
 import org.apache.hadoop.hbase.KeyValue;
 import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.backup.impl.BackupAdminImpl;
@@ -60,35 +60,31 @@ import org.apache.hadoop.hbase.testing.TestingHBaseCluster;
 import org.apache.hadoop.hbase.testing.TestingHBaseClusterOption;
 import org.apache.hadoop.hbase.tool.BulkLoadHFiles;
 import org.apache.hadoop.hbase.util.Bytes;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.TestTemplate;
+import org.junit.jupiter.params.provider.Arguments;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-@Category(LargeTests.class)
-@RunWith(Parameterized.class)
+@Tag(LargeTests.TAG)
+@HBaseParameterizedTestTemplate(name = "{index}: useBulkLoad={0}")
 public class TestIncrementalBackupMergeWithBulkLoad {
 
   private static final Logger LOG =
     LoggerFactory.getLogger(TestIncrementalBackupMergeWithBulkLoad.class);
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestIncrementalBackupMergeWithBulkLoad.class);
+  public boolean useBulkLoad;
 
-  @Parameterized.Parameters(name = "{index}: useBulkLoad={0}")
-  public static Iterable<Object[]> data() {
-    return HBaseCommonTestingUtility.BOOLEAN_PARAMETERIZED;
+  public TestIncrementalBackupMergeWithBulkLoad(boolean useBulkLoad) {
+    this.useBulkLoad = useBulkLoad;
   }
 
-  @Parameterized.Parameter(0)
-  public boolean useBulkLoad;
+  public static Stream<Arguments> parameters() {
+    return Stream.of(Arguments.of(true), Arguments.of(false));
+  }
 
   private TableName sourceTable;
   private TableName targetTable;
@@ -98,7 +94,7 @@ public class TestIncrementalBackupMergeWithBulkLoad {
   private static final Path BACKUP_ROOT_DIR = new Path("backupIT");
   private static final byte[] COLUMN_FAMILY = Bytes.toBytes("0");
 
-  @BeforeClass
+  @BeforeAll
   public static void beforeClass() throws Exception {
     Configuration conf = HBaseConfiguration.create();
     enableBackup(conf);
@@ -106,12 +102,12 @@ public class TestIncrementalBackupMergeWithBulkLoad {
     cluster.start();
   }
 
-  @AfterClass
+  @AfterAll
   public static void afterClass() throws Exception {
     cluster.stop();
   }
 
-  @Before
+  @BeforeEach
   public void setUp() throws Exception {
     sourceTable = TableName.valueOf("table-" + useBulkLoad);
     targetTable = TableName.valueOf("another-table-" + useBulkLoad);
@@ -120,7 +116,7 @@ public class TestIncrementalBackupMergeWithBulkLoad {
     createTable(targetTable);
   }
 
-  @Test
+  @TestTemplate
   public void testMergeContainingBulkloadedHfiles() throws Exception {
     Instant timestamp = Instant.now();
 
diff --git 
a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestIncrementalBackupMergeWithFailures.java
 
b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestIncrementalBackupMergeWithFailures.java
index 1ece1770489..ca066d436c2 100644
--- 
a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestIncrementalBackupMergeWithFailures.java
+++ 
b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestIncrementalBackupMergeWithFailures.java
@@ -18,8 +18,8 @@
 package org.apache.hadoop.hbase.backup;
 
 import static org.apache.hadoop.hbase.backup.util.BackupUtils.succeeded;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.io.IOException;
 import java.util.ArrayList;
@@ -28,7 +28,6 @@ import org.apache.commons.lang3.StringUtils;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.backup.impl.BackupAdminImpl;
 import org.apache.hadoop.hbase.backup.impl.BackupCommands;
@@ -42,22 +41,17 @@ import org.apache.hadoop.hbase.client.ConnectionFactory;
 import org.apache.hadoop.hbase.client.Table;
 import org.apache.hadoop.hbase.testclassification.LargeTests;
 import org.apache.hadoop.hbase.util.Pair;
-import org.junit.Assert;
-import org.junit.ClassRule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import org.apache.hbase.thirdparty.com.google.common.collect.Lists;
 
-@Category(LargeTests.class)
+@Tag(LargeTests.TAG)
 public class TestIncrementalBackupMergeWithFailures extends TestBackupBase {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestIncrementalBackupMergeWithFailures.class);
-
   private static final Logger LOG =
     LoggerFactory.getLogger(TestIncrementalBackupMergeWithFailures.class);
 
@@ -80,7 +74,7 @@ public class TestIncrementalBackupMergeWithFailures extends 
TestBackupBase {
       if (val != null) {
         failurePhase = FailurePhase.valueOf(val);
       } else {
-        Assert.fail("Failure phase is not set");
+        Assertions.fail("Failure phase is not set");
       }
     }
 
@@ -248,13 +242,13 @@ public class TestIncrementalBackupMergeWithFailures 
extends TestBackupBase {
     Table t1 = insertIntoTable(conn, table1, famName, 1, ADD_ROWS);
     LOG.debug("writing " + ADD_ROWS + " rows to " + table1);
 
-    Assert.assertEquals(TEST_UTIL.countRows(t1), NB_ROWS_IN_BATCH + ADD_ROWS);
+    Assertions.assertEquals(NB_ROWS_IN_BATCH + ADD_ROWS, 
TEST_UTIL.countRows(t1));
     t1.close();
     LOG.debug("written " + ADD_ROWS + " rows to " + table1);
 
     Table t2 = insertIntoTable(conn, table2, famName, 1, ADD_ROWS);
 
-    Assert.assertEquals(TEST_UTIL.countRows(t2), NB_ROWS_IN_BATCH + ADD_ROWS);
+    Assertions.assertEquals(NB_ROWS_IN_BATCH + ADD_ROWS, 
TEST_UTIL.countRows(t2));
     t2.close();
     LOG.debug("written " + ADD_ROWS + " rows to " + table2);
 
@@ -285,7 +279,7 @@ public class TestIncrementalBackupMergeWithFailures extends 
TestBackupBase {
       try (BackupAdmin bAdmin = new BackupAdminImpl(conn)) {
         String[] backups = new String[] { backupIdIncMultiple, 
backupIdIncMultiple2 };
         bAdmin.mergeBackups(backups);
-        Assert.fail("Expected IOException");
+        Assertions.fail("Expected IOException");
       } catch (IOException e) {
         BackupSystemTable table = new BackupSystemTable(conn);
         if (phase.ordinal() < FailurePhase.PHASE4.ordinal()) {
@@ -294,7 +288,7 @@ public class TestIncrementalBackupMergeWithFailures extends 
TestBackupBase {
           assertFalse(table.isMergeInProgress());
           try {
             table.finishBackupExclusiveOperation();
-            Assert.fail("IOException is expected");
+            Assertions.fail("IOException is expected");
           } catch (IOException ee) {
             // Expected
           }
@@ -303,7 +297,7 @@ public class TestIncrementalBackupMergeWithFailures extends 
TestBackupBase {
           assertTrue(table.isMergeInProgress());
           try {
             table.startBackupExclusiveOperation();
-            Assert.fail("IOException is expected");
+            Assertions.fail("IOException is expected");
           } catch (IOException ee) {
             // Expected - clean up before proceeding
             // table.finishMergeOperation();
@@ -336,12 +330,12 @@ public class TestIncrementalBackupMergeWithFailures 
extends TestBackupBase {
     Table hTable = conn.getTable(table1_restore);
     LOG.debug("After incremental restore: " + hTable.getDescriptor());
     LOG.debug("f1 has " + TEST_UTIL.countRows(hTable, famName) + " rows");
-    Assert.assertEquals(TEST_UTIL.countRows(hTable, famName), NB_ROWS_IN_BATCH 
+ 2 * ADD_ROWS);
+    Assertions.assertEquals(NB_ROWS_IN_BATCH + 2 * ADD_ROWS, 
TEST_UTIL.countRows(hTable, famName));
 
     hTable.close();
 
     hTable = conn.getTable(table2_restore);
-    Assert.assertEquals(TEST_UTIL.countRows(hTable), NB_ROWS_IN_BATCH + 2 * 
ADD_ROWS);
+    Assertions.assertEquals(NB_ROWS_IN_BATCH + 2 * ADD_ROWS, 
TEST_UTIL.countRows(hTable));
     hTable.close();
 
     admin.close();
diff --git 
a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestIncrementalBackupRestore.java
 
b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestIncrementalBackupRestore.java
index f7a29fa5df4..343c371e6b0 100644
--- 
a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestIncrementalBackupRestore.java
+++ 
b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestIncrementalBackupRestore.java
@@ -194,15 +194,15 @@ public class TestIncrementalBackupRestore extends 
IncrementalBackupRestoreTestBa
         LOG.debug("After incremental restore: {}", hTable.getDescriptor());
         int countFamName = TEST_UTIL.countRows(hTable, famName);
         LOG.debug("f1 has " + countFamName + " rows");
-        assertEquals(countFamName, NB_ROWS_IN_BATCH + ADD_ROWS);
+        assertEquals(NB_ROWS_IN_BATCH + ADD_ROWS, countFamName);
 
         int countFam2Name = TEST_UTIL.countRows(hTable, fam2Name);
         LOG.debug("f2 has {} rows", countFam2Name);
-        assertEquals(countFam2Name, NB_ROWS_FAM2);
+        assertEquals(NB_ROWS_FAM2, countFam2Name);
 
         int countMobName = TEST_UTIL.countRows(hTable, mobName);
         LOG.debug("mob has {} rows", countMobName);
-        assertEquals(countMobName, NB_ROWS_MOB);
+        assertEquals(NB_ROWS_MOB, countMobName);
       }
 
       try (Table hTable = conn.getTable(table2_restore)) {
diff --git 
a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestIncrementalBackupRestoreWithOriginalSplits.java
 
b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestIncrementalBackupRestoreWithOriginalSplits.java
index 8bece20839c..68ea52da462 100644
--- 
a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestIncrementalBackupRestoreWithOriginalSplits.java
+++ 
b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestIncrementalBackupRestoreWithOriginalSplits.java
@@ -69,7 +69,7 @@ public class TestIncrementalBackupRestoreWithOriginalSplits
 
       // Check that the backup files are the same before and after the restore 
process
       assertEquals(postRestoreBackupFiles, preRestoreBackupFiles);
-      assertEquals(TEST_UTIL.countRows(table1_restore), NB_ROWS_IN_BATCH);
+      assertEquals(NB_ROWS_IN_BATCH, TEST_UTIL.countRows(table1_restore));
 
       int ROWS_TO_ADD = 1_000;
       // different IDs so that rows don't overlap
diff --git 
a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestIncrementalBackupWithBulkLoad.java
 
b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestIncrementalBackupWithBulkLoad.java
index a2ca4304174..d877a38f962 100644
--- 
a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestIncrementalBackupWithBulkLoad.java
+++ 
b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestIncrementalBackupWithBulkLoad.java
@@ -17,10 +17,10 @@
  */
 package org.apache.hadoop.hbase.backup;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
 
 import java.io.IOException;
 import java.nio.ByteBuffer;
@@ -29,7 +29,6 @@ import java.util.List;
 import java.util.Map;
 import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.backup.impl.BackupSystemTable;
 import org.apache.hadoop.hbase.backup.impl.BulkLoad;
@@ -43,22 +42,17 @@ import org.apache.hadoop.hbase.util.Bytes;
 import org.apache.hadoop.hbase.util.CommonFSUtils;
 import org.apache.hadoop.hbase.util.HFileArchiveUtil;
 import org.apache.hadoop.hbase.util.HFileTestUtil;
-import org.junit.ClassRule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
 
 import org.apache.hbase.thirdparty.com.google.common.collect.ImmutableList;
 
 /**
  * This test checks whether backups properly track & manage bulk files loads.
  */
-@Category(LargeTests.class)
+@Tag(LargeTests.TAG)
 public class TestIncrementalBackupWithBulkLoad extends TestBackupBase {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestIncrementalBackupWithBulkLoad.class);
-
   private static final String TEST_NAME = 
TestIncrementalBackupWithBulkLoad.class.getSimpleName();
   private static final int ROWS_IN_BULK_LOAD = 100;
 
@@ -185,7 +179,7 @@ public class TestIncrementalBackupWithBulkLoad extends 
TestBackupBase {
         regionName, columnFamily);
       Path archivedFile1 = new Path(archiveDir, filename1);
       fs.mkdirs(archiveDir);
-      assertTrue("File should be moved to archive", fs.rename(activeFile1, 
archivedFile1));
+      assertTrue(fs.rename(activeFile1, archivedFile1), "File should be moved 
to archive");
 
       TestBackupBase.IncrementalTableBackupClientForTest client =
         new 
TestBackupBase.IncrementalTableBackupClientForTest(TEST_UTIL.getConnection(),
@@ -194,12 +188,12 @@ public class TestIncrementalBackupWithBulkLoad extends 
TestBackupBase {
 
       client.updateFileLists(activeFiles, archiveFiles);
 
-      assertEquals("Only one file should remain in active files", 1, 
activeFiles.size());
-      assertEquals("File2 should still be in active files", 
activeFile2.toString(),
-        activeFiles.get(0));
-      assertEquals("One file should be added to archive files", 1, 
archiveFiles.size());
-      assertEquals("Archived file should have correct path", 
archivedFile1.toString(),
-        archiveFiles.get(0));
+      assertEquals(1, activeFiles.size(), "Only one file should remain in 
active files");
+      assertEquals(activeFile2.toString(), activeFiles.get(0),
+        "File2 should still be in active files");
+      assertEquals(1, archiveFiles.size(), "One file should be added to 
archive files");
+      assertEquals(archivedFile1.toString(), archiveFiles.get(0),
+        "Archived file should have correct path");
       systemTable.finishBackupExclusiveOperation();
     }
 
diff --git 
a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestIncrementalBackupWithDataLoss.java
 
b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestIncrementalBackupWithDataLoss.java
index cf442f5f0dd..efbe7cbe46a 100644
--- 
a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestIncrementalBackupWithDataLoss.java
+++ 
b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestIncrementalBackupWithDataLoss.java
@@ -17,31 +17,25 @@
  */
 package org.apache.hadoop.hbase.backup;
 
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.util.List;
 import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.backup.impl.BackupAdminImpl;
 import org.apache.hadoop.hbase.client.Connection;
 import org.apache.hadoop.hbase.client.ConnectionFactory;
 import org.apache.hadoop.hbase.testclassification.LargeTests;
-import org.junit.ClassRule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import org.apache.hbase.thirdparty.com.google.common.collect.Lists;
 
-@Category(LargeTests.class)
+@Tag(LargeTests.TAG)
 public class TestIncrementalBackupWithDataLoss extends TestBackupBase {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestIncrementalBackupWithDataLoss.class);
-
   private static final Logger LOG =
     LoggerFactory.getLogger(TestIncrementalBackupWithDataLoss.class);
 
diff --git 
a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestIncrementalBackupWithFailures.java
 
b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestIncrementalBackupWithFailures.java
index c8d53656418..b1dec43fef5 100644
--- 
a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestIncrementalBackupWithFailures.java
+++ 
b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestIncrementalBackupWithFailures.java
@@ -17,13 +17,11 @@
  */
 package org.apache.hadoop.hbase.backup;
 
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
-import java.util.ArrayList;
-import java.util.Collection;
 import java.util.List;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.backup.BackupInfo.BackupState;
 import org.apache.hadoop.hbase.backup.impl.BackupAdminImpl;
@@ -41,37 +39,21 @@ import 
org.apache.hadoop.hbase.client.TableDescriptorBuilder;
 import org.apache.hadoop.hbase.testclassification.LargeTests;
 import org.apache.hadoop.hbase.util.Bytes;
 import org.apache.hadoop.util.ToolRunner;
-import org.junit.Assert;
-import org.junit.ClassRule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import org.apache.hbase.thirdparty.com.google.common.collect.Lists;
 
-@Category(LargeTests.class)
-@RunWith(Parameterized.class)
+@Tag(LargeTests.TAG)
 public class TestIncrementalBackupWithFailures extends TestBackupBase {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestIncrementalBackupWithFailures.class);
-
   private static final Logger LOG =
     LoggerFactory.getLogger(TestIncrementalBackupWithFailures.class);
 
-  @Parameterized.Parameters
-  public static Collection<Object[]> data() {
+  static {
     provider = "multiwal";
-    List<Object[]> params = new ArrayList<Object[]>();
-    params.add(new Object[] { Boolean.TRUE });
-    return params;
-  }
-
-  public TestIncrementalBackupWithFailures(Boolean b) {
   }
 
   // implement all test cases in 1 test since incremental backup/restore has 
dependencies
@@ -103,7 +85,7 @@ public class TestIncrementalBackupWithFailures extends 
TestBackupBase {
     Table t1 = insertIntoTable(conn, table1, famName, 1, ADD_ROWS);
     LOG.debug("writing " + ADD_ROWS + " rows to " + table1);
 
-    Assert.assertEquals(TEST_UTIL.countRows(t1), NB_ROWS_IN_BATCH + ADD_ROWS + 
NB_ROWS_FAM3);
+    assertEquals(TEST_UTIL.countRows(t1), NB_ROWS_IN_BATCH + ADD_ROWS + 
NB_ROWS_FAM3);
     t1.close();
     LOG.debug("written " + ADD_ROWS + " rows to " + table1);
 
@@ -115,7 +97,7 @@ public class TestIncrementalBackupWithFailures extends 
TestBackupBase {
       t2.put(p2);
     }
 
-    Assert.assertEquals(TEST_UTIL.countRows(t2), NB_ROWS_IN_BATCH + 5);
+    assertEquals(TEST_UTIL.countRows(t2), NB_ROWS_IN_BATCH + 5);
     t2.close();
     LOG.debug("written " + 5 + " rows to " + table2);
 
diff --git 
a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestRemoteBackup.java
 
b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestRemoteBackup.java
index f9b9ab7ab50..bfa53567a01 100644
--- 
a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestRemoteBackup.java
+++ 
b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestRemoteBackup.java
@@ -17,11 +17,11 @@
  */
 package org.apache.hadoop.hbase.backup;
 
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.io.IOException;
 import java.util.concurrent.CountDownLatch;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.HBaseTestingUtility;
 import org.apache.hadoop.hbase.HConstants;
 import org.apache.hadoop.hbase.TableName;
@@ -38,30 +38,24 @@ import 
org.apache.hadoop.hbase.snapshot.MobSnapshotTestingUtils;
 import org.apache.hadoop.hbase.snapshot.SnapshotTestingUtils;
 import org.apache.hadoop.hbase.testclassification.LargeTests;
 import org.apache.hadoop.hbase.util.Bytes;
-import org.junit.Assert;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import org.apache.hbase.thirdparty.com.google.common.collect.Lists;
 
-@Category(LargeTests.class)
+@Tag(LargeTests.TAG)
 public class TestRemoteBackup extends TestBackupBase {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestRemoteBackup.class);
-
   private static final Logger LOG = 
LoggerFactory.getLogger(TestRemoteBackup.class);
 
   /**
    * Setup Cluster with appropriate configurations before running tests.
    * @throws Exception if starting the mini cluster or setting up the tables 
fails
    */
-  @BeforeClass
+  @BeforeAll
   public static void setUp() throws Exception {
     TEST_UTIL = new HBaseTestingUtility();
     conf1 = TEST_UTIL.getConfiguration();
@@ -120,10 +114,10 @@ public class TestRemoteBackup extends TestBackupBase {
     assertTrue(checkSucceeded(backupId));
 
     LOG.info("backup complete " + backupId);
-    Assert.assertEquals(TEST_UTIL.countRows(t1, famName), NB_ROWS_IN_BATCH);
+    assertEquals(NB_ROWS_IN_BATCH, TEST_UTIL.countRows(t1, famName));
 
     t.join();
-    Assert.assertEquals(TEST_UTIL.countRows(t1, fam3Name), NB_ROWS_IN_FAM3);
+    assertEquals(NB_ROWS_IN_FAM3, TEST_UTIL.countRows(t1, fam3Name));
     t1.close();
 
     TableName[] tablesRestoreFull = new TableName[] { table1 };
@@ -140,12 +134,12 @@ public class TestRemoteBackup extends TestBackupBase {
 
     // #5.2 - checking row count of tables for full restore
     Table hTable = conn.getTable(table1_restore);
-    Assert.assertEquals(TEST_UTIL.countRows(hTable, famName), 
NB_ROWS_IN_BATCH);
+    assertEquals(NB_ROWS_IN_BATCH, TEST_UTIL.countRows(hTable, famName));
     int cnt3 = TEST_UTIL.countRows(hTable, fam3Name);
-    Assert.assertTrue(cnt3 >= 0 && cnt3 <= NB_ROWS_IN_FAM3);
+    assertTrue(cnt3 >= 0 && cnt3 <= NB_ROWS_IN_FAM3);
 
     int rows1 = MobSnapshotTestingUtils.countMobRows(t1, fam2Name);
-    Assert.assertEquals(rows0, rows1);
+    assertEquals(rows0, rows1);
     hTable.close();
 
     hAdmin.close();
diff --git 
a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestRemoteRestore.java
 
b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestRemoteRestore.java
index 72dc3504cff..a46d5df2ce0 100644
--- 
a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestRemoteRestore.java
+++ 
b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestRemoteRestore.java
@@ -17,13 +17,12 @@
  */
 package org.apache.hadoop.hbase.backup;
 
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.HBaseTestingUtility;
 import org.apache.hadoop.hbase.HConstants;
 import org.apache.hadoop.hbase.TableName;
@@ -33,27 +32,22 @@ import org.apache.hadoop.hbase.backup.util.BackupUtils;
 import org.apache.hadoop.hbase.client.Admin;
 import org.apache.hadoop.hbase.client.ConnectionFactory;
 import org.apache.hadoop.hbase.testclassification.LargeTests;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-@Category(LargeTests.class)
+@Tag(LargeTests.TAG)
 public class TestRemoteRestore extends TestBackupBase {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestRemoteRestore.class);
-
   private static final Logger LOG = 
LoggerFactory.getLogger(TestRemoteRestore.class);
 
   /**
    * Setup Cluster with appropriate configurations before running tests.
    * @throws Exception if starting the mini cluster or setting up the tables 
fails
    */
-  @BeforeClass
+  @BeforeAll
   public static void setUp() throws Exception {
     TEST_UTIL = new HBaseTestingUtility();
     conf1 = TEST_UTIL.getConfiguration();
diff --git 
a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestRepairAfterFailedDelete.java
 
b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestRepairAfterFailedDelete.java
index 93345fd1705..a134c974fee 100644
--- 
a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestRepairAfterFailedDelete.java
+++ 
b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestRepairAfterFailedDelete.java
@@ -17,33 +17,27 @@
  */
 package org.apache.hadoop.hbase.backup;
 
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.util.List;
 import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.backup.impl.BackupSystemTable;
 import org.apache.hadoop.hbase.client.Admin;
 import org.apache.hadoop.hbase.client.Connection;
 import org.apache.hadoop.hbase.testclassification.LargeTests;
 import org.apache.hadoop.util.ToolRunner;
-import org.junit.ClassRule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import org.apache.hbase.thirdparty.com.google.common.collect.Lists;
 
-@Category(LargeTests.class)
+@Tag(LargeTests.TAG)
 public class TestRepairAfterFailedDelete extends TestBackupBase {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestRepairAfterFailedDelete.class);
-
   private static final Logger LOG = 
LoggerFactory.getLogger(TestRepairAfterFailedDelete.class);
 
   @Test
diff --git 
a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestRestoreBoundaryTests.java
 
b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestRestoreBoundaryTests.java
index 7b49558031e..d935dd6ff6a 100644
--- 
a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestRestoreBoundaryTests.java
+++ 
b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestRestoreBoundaryTests.java
@@ -17,27 +17,21 @@
  */
 package org.apache.hadoop.hbase.backup;
 
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.util.List;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.backup.util.BackupUtils;
 import org.apache.hadoop.hbase.client.Admin;
 import org.apache.hadoop.hbase.testclassification.LargeTests;
-import org.junit.ClassRule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-@Category(LargeTests.class)
+@Tag(LargeTests.TAG)
 public class TestRestoreBoundaryTests extends TestBackupBase {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestRestoreBoundaryTests.class);
-
   private static final Logger LOG = 
LoggerFactory.getLogger(TestRestoreBoundaryTests.class);
 
   /**
diff --git 
a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestSystemTableSnapshot.java
 
b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestSystemTableSnapshot.java
index f626dec5875..40e078f5b57 100644
--- 
a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestSystemTableSnapshot.java
+++ 
b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestSystemTableSnapshot.java
@@ -17,30 +17,27 @@
  */
 package org.apache.hadoop.hbase.backup;
 
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.backup.impl.BackupSystemTable;
 import org.apache.hadoop.hbase.client.Admin;
 import org.apache.hadoop.hbase.testclassification.LargeTests;
-import org.junit.ClassRule;
-import org.junit.experimental.categories.Category;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-@Category(LargeTests.class)
+@Tag(LargeTests.TAG)
 public class TestSystemTableSnapshot extends TestBackupBase {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestSystemTableSnapshot.class);
-
   private static final Logger LOG = 
LoggerFactory.getLogger(TestSystemTableSnapshot.class);
 
   /**
    * Verify backup system table snapshot.
    * @throws Exception if an operation on the table fails
    */
-  // @Test
+  @Disabled
+  @Test
   public void _testBackupRestoreSystemTable() throws Exception {
     LOG.info("test snapshot system table");
 
diff --git 
a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/mapreduce/TestMapReduceBackupCopyJob.java
 
b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/mapreduce/TestMapReduceBackupCopyJob.java
index d8408799034..6f354b996de 100644
--- 
a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/mapreduce/TestMapReduceBackupCopyJob.java
+++ 
b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/mapreduce/TestMapReduceBackupCopyJob.java
@@ -19,25 +19,19 @@ package org.apache.hadoop.hbase.backup.mapreduce;
 
 import static 
org.apache.hadoop.hbase.backup.mapreduce.MapReduceBackupCopyJob.BACKUP_COPY_OPTION_PREFIX;
 import static org.apache.hadoop.tools.DistCpConstants.CONF_LABEL_MAX_MAPS;
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
 import java.util.List;
 import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.testclassification.SmallTests;
-import org.junit.ClassRule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
 
 import org.apache.hbase.thirdparty.com.google.common.collect.ImmutableList;
 
-@Category(SmallTests.class)
+@Tag(SmallTests.TAG)
 public class TestMapReduceBackupCopyJob {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestMapReduceBackupCopyJob.class);
-
   @Test
   public void testDistCpOptionParsing() {
     Configuration conf = new Configuration();
@@ -46,7 +40,7 @@ public class TestMapReduceBackupCopyJob {
 
     List<String> expectedArgs = ImmutableList.<String> builder().add("-m", 
"1000").build();
 
-    assertEquals(args, expectedArgs);
+    assertEquals(expectedArgs, args);
   }
 
 }
diff --git 
a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/master/TestBackupLogCleaner.java
 
b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/master/TestBackupLogCleaner.java
index 2020a75de31..1c87cfd75c7 100644
--- 
a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/master/TestBackupLogCleaner.java
+++ 
b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/master/TestBackupLogCleaner.java
@@ -17,9 +17,9 @@
  */
 package org.apache.hadoop.hbase.backup.master;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.io.IOException;
 import java.util.ArrayList;
@@ -32,7 +32,6 @@ import java.util.Map;
 import java.util.Set;
 import org.apache.hadoop.fs.FileStatus;
 import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.HRegionLocation;
 import org.apache.hadoop.hbase.ServerName;
 import org.apache.hadoop.hbase.TableName;
@@ -49,26 +48,21 @@ import org.apache.hadoop.hbase.master.HMaster;
 import org.apache.hadoop.hbase.testclassification.LargeTests;
 import org.apache.hadoop.hbase.util.Bytes;
 import org.apache.hadoop.hbase.util.JVMClusterUtil;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-@Category(LargeTests.class)
+@Tag(LargeTests.TAG)
 public class TestBackupLogCleaner extends TestBackupBase {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestBackupLogCleaner.class);
-
   private static final Logger LOG = 
LoggerFactory.getLogger(TestBackupLogCleaner.class);
 
   // implements all test cases in 1 test since incremental full backup/
   // incremental backup has dependencies
 
-  @BeforeClass
+  @BeforeAll
   public static void before() {
     TEST_UTIL.getConfiguration().setLong(BackupLogCleaner.TS_BUFFER_KEY, 0);
   }
@@ -268,12 +262,12 @@ public class TestBackupLogCleaner extends TestBackupBase {
 
       List<FileStatus> walsAfterNewServer = 
getListOfWALFiles(TEST_UTIL.getConfiguration());
       LOG.info("WALs after adding new server: {}", walsAfterNewServer.size());
-      assertTrue("Should have more WALs after new server",
-        walsAfterNewServer.size() > walsAfterB1.size());
+      assertTrue(walsAfterNewServer.size() > walsAfterB1.size(),
+        "Should have more WALs after new server");
 
       List<FileStatus> newServerWALs = new ArrayList<>(walsAfterNewServer);
       newServerWALs.removeAll(walsAfterB1);
-      assertFalse("Should have WALs from new server", newServerWALs.isEmpty());
+      assertFalse(newServerWALs.isEmpty(), "Should have WALs from new server");
 
       BackupLogCleaner cleaner = new BackupLogCleaner();
       cleaner.setConf(TEST_UTIL.getConfiguration());
@@ -283,8 +277,8 @@ public class TestBackupLogCleaner extends TestBackupBase {
 
       Set<FileStatus> deletable = 
toSet(cleaner.getDeletableFiles(walsAfterNewServer));
       for (FileStatus newWAL : newServerWALs) {
-        assertFalse("WAL from new server should NOT be deletable: " + 
newWAL.getPath(),
-          deletable.contains(newWAL));
+        assertFalse(deletable.contains(newWAL),
+          "WAL from new server should NOT be deletable: " + newWAL.getPath());
       }
     } finally {
       
TEST_UTIL.truncateTable(BackupSystemTable.getTableName(TEST_UTIL.getConfiguration())).close();
@@ -308,18 +302,18 @@ public class TestBackupLogCleaner extends TestBackupBase {
     BackupBoundaries boundaries = BackupBoundaries.builder(0L)
       .addBackupTimestamps(host, backupStartCode, backupStartCode).build();
 
-    assertTrue("WAL older than backup should be deletable",
-      BackupLogCleaner.canDeleteFile(boundaries, oldWAL));
+    assertTrue(BackupLogCleaner.canDeleteFile(boundaries, oldWAL),
+      "WAL older than backup should be deletable");
 
     // WAL from exactly at the backup boundary
     Path boundaryWAL = new 
Path("/hbase/oldWALs/server1%2C60020%2C12345.1000000");
-    assertTrue("WAL at boundary should be deletable",
-      BackupLogCleaner.canDeleteFile(boundaries, boundaryWAL));
+    assertTrue(BackupLogCleaner.canDeleteFile(boundaries, boundaryWAL),
+      "WAL at boundary should be deletable");
 
     // WAL from a server that joined AFTER the backup
     Path newServerWAL = new 
Path("/hbase/oldWALs/newserver%2C60020%2C99999.1500000");
-    assertFalse("WAL from new server (after backup) should NOT be deletable",
-      BackupLogCleaner.canDeleteFile(boundaries, newServerWAL));
+    assertFalse(BackupLogCleaner.canDeleteFile(boundaries, newServerWAL),
+      "WAL from new server (after backup) should NOT be deletable");
   }
 
   @Test

Reply via email to