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

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


The following commit(s) were added to refs/heads/branch-2.5 by this push:
     new 27918b61b6c HBASE-29858 Upgrade hbase-rest to use junit5 (#7705)
27918b61b6c is described below

commit 27918b61b6cf27c32ef5397bee6d13448188aa8a
Author: Liu Xiao <[email protected]>
AuthorDate: Thu Feb 5 16:08:13 2026 +0800

    HBASE-29858 Upgrade hbase-rest to use junit5 (#7705)
    
    Signed-off-by: Duo Zhang <[email protected]>
    (cherry picked from commit 3d9fc1d7edbbf3f19eb5bd5bb06e98614443dfa8)
---
 hbase-rest/pom.xml                                 |  5 --
 .../org/apache/hadoop/hbase/rest/DummyFilter.java  |  3 +-
 .../apache/hadoop/hbase/rest/RowResourceBase.java  | 18 +++---
 .../apache/hadoop/hbase/rest/TestDeleteRow.java    | 15 ++---
 .../hadoop/hbase/rest/TestGZIPResponseWrapper.java | 18 ++----
 .../hadoop/hbase/rest/TestGetAndPutResource.java   | 30 ++++------
 .../apache/hadoop/hbase/rest/TestGzipFilter.java   | 28 ++++-----
 .../hadoop/hbase/rest/TestMultiRowResource.java    | 69 ++++++++++------------
 .../hbase/rest/TestNamespacesInstanceResource.java | 61 +++++++++----------
 .../hadoop/hbase/rest/TestNamespacesResource.java  | 24 ++++----
 .../hadoop/hbase/rest/TestRESTServerSSL.java       | 38 ++++++------
 .../hadoop/hbase/rest/TestResourceFilter.java      | 23 +++-----
 .../hadoop/hbase/rest/TestScannerResource.java     | 36 +++++------
 .../hadoop/hbase/rest/TestScannersWithFilters.java | 59 +++++++++---------
 .../hadoop/hbase/rest/TestScannersWithLabels.java  | 24 ++++----
 .../hadoop/hbase/rest/TestSchemaResource.java      | 66 ++++++++++-----------
 .../hadoop/hbase/rest/TestSecureRESTServer.java    | 31 ++++------
 .../hbase/rest/TestSecurityHeadersFilter.java      | 17 ++----
 .../hadoop/hbase/rest/TestStatusResource.java      | 31 ++++------
 .../hadoop/hbase/rest/TestTableResource.java       | 34 +++++------
 .../apache/hadoop/hbase/rest/TestTableScan.java    | 36 +++++------
 .../hadoop/hbase/rest/TestVersionResource.java     | 30 ++++------
 .../hbase/rest/client/TestRemoteAdminRetries.java  | 24 +++-----
 .../hbase/rest/client/TestRemoteHTableRetries.java | 24 ++++----
 .../hadoop/hbase/rest/client/TestRemoteTable.java  | 41 ++++++-------
 .../hadoop/hbase/rest/client/TestXmlParsing.java   | 29 ++++-----
 .../hadoop/hbase/rest/model/TestCellModel.java     | 27 ++++-----
 .../hadoop/hbase/rest/model/TestCellSetModel.java  | 22 ++++---
 .../hbase/rest/model/TestColumnSchemaModel.java    | 33 +++++------
 .../hadoop/hbase/rest/model/TestModelBase.java     |  4 +-
 .../rest/model/TestNamespacesInstanceModel.java    | 17 ++----
 .../hbase/rest/model/TestNamespacesModel.java      | 17 ++----
 .../hadoop/hbase/rest/model/TestRowModel.java      | 24 +++-----
 .../hadoop/hbase/rest/model/TestScannerModel.java  | 33 +++++------
 .../rest/model/TestStorageClusterStatusModel.java  | 19 +++---
 .../rest/model/TestStorageClusterVersionModel.java | 15 ++---
 .../hbase/rest/model/TestTableInfoModel.java       | 22 ++++---
 .../hbase/rest/model/TestTableListModel.java       | 15 ++---
 .../hbase/rest/model/TestTableRegionModel.java     | 20 +++----
 .../hbase/rest/model/TestTableSchemaModel.java     | 24 +++-----
 .../hadoop/hbase/rest/model/TestVersionModel.java  | 13 ++--
 41 files changed, 463 insertions(+), 656 deletions(-)

diff --git a/hbase-rest/pom.xml b/hbase-rest/pom.xml
index 87b7ebe3533..f598e3c4418 100644
--- a/hbase-rest/pom.xml
+++ b/hbase-rest/pom.xml
@@ -214,11 +214,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>
     <dependency>
       <groupId>org.mockito</groupId>
       <artifactId>mockito-core</artifactId>
diff --git 
a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/DummyFilter.java 
b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/DummyFilter.java
index 4c9b20c6ace..d6d50b8d781 100644
--- a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/DummyFilter.java
+++ b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/DummyFilter.java
@@ -48,7 +48,7 @@ public class DummyFilter implements Filter {
 
       String path = request.getRequestURI();
       LOG.info(path);
-      if (path.indexOf("/status/cluster") >= 0) {
+      if (path.contains("/status/cluster")) {
         LOG.info("Blocking cluster status request");
         response.sendError(HttpServletResponse.SC_NOT_FOUND, "Cluster status 
cannot be requested.");
       } else {
@@ -60,5 +60,4 @@ public class DummyFilter implements Filter {
   @Override
   public void init(FilterConfig filterChain) throws ServletException {
   }
-
 }
diff --git 
a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/RowResourceBase.java 
b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/RowResourceBase.java
index 4d5fe8ea64a..239d91dd80f 100644
--- a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/RowResourceBase.java
+++ b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/RowResourceBase.java
@@ -17,7 +17,7 @@
  */
 package org.apache.hadoop.hbase.rest;
 
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
 import java.io.ByteArrayInputStream;
@@ -45,10 +45,10 @@ import org.apache.hadoop.hbase.rest.model.RowModel;
 import org.apache.hadoop.hbase.util.Bytes;
 import org.apache.http.Header;
 import org.apache.http.message.BasicHeader;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
+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.apache.hbase.thirdparty.com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider;
 import org.apache.hbase.thirdparty.javax.ws.rs.core.MediaType;
@@ -83,7 +83,7 @@ public class RowResourceBase {
   protected static Configuration conf;
   protected static ObjectMapper jsonMapper;
 
-  @BeforeClass
+  @BeforeAll
   public static void setUpBeforeClass() throws Exception {
     conf = TEST_UTIL.getConfiguration();
     TEST_UTIL.startMiniCluster(3);
@@ -96,13 +96,13 @@ public class RowResourceBase {
     client = new Client(new Cluster().add("localhost", 
REST_TEST_UTIL.getServletPort()));
   }
 
-  @AfterClass
+  @AfterAll
   public static void tearDownAfterClass() throws Exception {
     REST_TEST_UTIL.shutdownServletContainer();
     TEST_UTIL.shutdownMiniCluster();
   }
 
-  @Before
+  @BeforeEach
   public void beforeMethod() throws Exception {
     Admin admin = TEST_UTIL.getAdmin();
     if (admin.tableExists(TABLE_NAME)) {
@@ -114,7 +114,7 @@ public class RowResourceBase {
     admin.createTable(htd);
   }
 
-  @After
+  @AfterEach
   public void afterMethod() throws Exception {
     Admin admin = TEST_UTIL.getAdmin();
     if (admin.tableExists(TABLE_NAME)) {
diff --git 
a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestDeleteRow.java 
b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestDeleteRow.java
index 9893a9ef67d..e19564a4d1c 100644
--- a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestDeleteRow.java
+++ b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestDeleteRow.java
@@ -17,25 +17,20 @@
  */
 package org.apache.hadoop.hbase.rest;
 
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
 import java.io.IOException;
 import javax.xml.bind.JAXBException;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.rest.client.Response;
 import org.apache.hadoop.hbase.testclassification.MediumTests;
 import org.apache.hadoop.hbase.testclassification.RestTests;
-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({ RestTests.class, MediumTests.class })
+@Tag(RestTests.TAG)
+@Tag(MediumTests.TAG)
 public class TestDeleteRow extends RowResourceBase {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestDeleteRow.class);
-
   @Test
   public void testDeleteNonExistentColumn() throws Exception {
     Response response = putValueJson(TABLE, ROW_1, COLUMN_1, VALUE_1);
diff --git 
a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestGZIPResponseWrapper.java
 
b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestGZIPResponseWrapper.java
index fbff87c3d0c..e98230d9961 100644
--- 
a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestGZIPResponseWrapper.java
+++ 
b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestGZIPResponseWrapper.java
@@ -17,8 +17,8 @@
  */
 package org.apache.hadoop.hbase.rest;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.never;
 import static org.mockito.Mockito.verify;
@@ -27,22 +27,17 @@ import static org.mockito.Mockito.when;
 import java.io.IOException;
 import javax.servlet.ServletOutputStream;
 import javax.servlet.http.HttpServletResponse;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.rest.filter.GZIPResponseStream;
 import org.apache.hadoop.hbase.rest.filter.GZIPResponseWrapper;
 import org.apache.hadoop.hbase.testclassification.RestTests;
 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({ RestTests.class, SmallTests.class })
+@Tag(RestTests.TAG)
+@Tag(SmallTests.TAG)
 public class TestGZIPResponseWrapper {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestGZIPResponseWrapper.class);
-
   private final HttpServletResponse response = mock(HttpServletResponse.class);
   private final GZIPResponseWrapper wrapper = new 
GZIPResponseWrapper(response);
 
@@ -117,5 +112,4 @@ public class TestGZIPResponseWrapper {
     wrapper.sendError(404, "error message");
     verify(response).sendError(404, "error message");
   }
-
 }
diff --git 
a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestGetAndPutResource.java
 
b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestGetAndPutResource.java
index 885764e96bf..c17b6bf0af2 100644
--- 
a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestGetAndPutResource.java
+++ 
b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestGetAndPutResource.java
@@ -17,8 +17,8 @@
  */
 package org.apache.hadoop.hbase.rest;
 
-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.ByteArrayInputStream;
 import java.io.IOException;
@@ -29,7 +29,6 @@ import java.util.HashMap;
 import java.util.List;
 import javax.xml.bind.JAXBException;
 import org.apache.hadoop.hbase.CompatibilityFactory;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.HConstants;
 import org.apache.hadoop.hbase.rest.client.Response;
 import org.apache.hadoop.hbase.rest.model.CellModel;
@@ -42,15 +41,12 @@ import org.apache.hadoop.hbase.testclassification.RestTests;
 import org.apache.hadoop.hbase.util.Bytes;
 import org.apache.http.Header;
 import org.apache.http.message.BasicHeader;
-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({ RestTests.class, LargeTests.class })
+@Tag(RestTests.TAG)
+@Tag(LargeTests.TAG)
 public class TestGetAndPutResource extends RowResourceBase {
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestGetAndPutResource.class);
 
   private static final MetricsAssertHelper METRICS_ASSERT =
     CompatibilityFactory.getInstance(MetricsAssertHelper.class);
@@ -310,8 +306,8 @@ public class TestGetAndPutResource extends RowResourceBase {
     assertEquals(200, response.getCode());
     assertEquals(Constants.MIMETYPE_JSON, response.getHeader("content-type"));
     CellSetModel cellSet = jsonMapper.readValue(response.getBody(), 
CellSetModel.class);
-    assertTrue(cellSet.getRows().size() == 1);
-    assertTrue(cellSet.getRows().get(0).getCells().size() == 1);
+    assertEquals(1, cellSet.getRows().size());
+    assertEquals(1, cellSet.getRows().get(0).getCells().size());
     CellModel cell = cellSet.getRows().get(0).getCells().get(0);
     assertEquals(VALUE_2, Bytes.toString(cell.getValue()));
     assertEquals(2L, cell.getTimestamp());
@@ -623,8 +619,8 @@ public class TestGetAndPutResource extends RowResourceBase {
     assertEquals(200, response.getCode());
     CellSetModel cellSet =
       (CellSetModel) xmlUnmarshaller.unmarshal(new 
ByteArrayInputStream(response.getBody()));
-    assertTrue(cellSet.getRows().size() == 1);
-    assertTrue(cellSet.getRows().get(0).getCells().size() == 3);
+    assertEquals(1, cellSet.getRows().size());
+    assertEquals(3, cellSet.getRows().get(0).getCells().size());
     List<CellModel> cells = cellSet.getRows().get(0).getCells();
 
     assertTrue(containsCellModel(cells, COLUMN_1, VALUE_1));
@@ -681,7 +677,7 @@ public class TestGetAndPutResource extends RowResourceBase {
     assertEquals(Constants.MIMETYPE_XML, response.getHeader("content-type"));
     CellSetModel cellSet =
       (CellSetModel) xmlUnmarshaller.unmarshal(new 
ByteArrayInputStream(response.getBody()));
-    assertTrue(cellSet.getRows().size() == 2);
+    assertEquals(2, cellSet.getRows().size());
 
     response = deleteRow(TABLE, ROW_1);
     assertEquals(200, response.getCode());
@@ -725,9 +721,9 @@ public class TestGetAndPutResource extends RowResourceBase {
     CellSetModel cellSet =
       (CellSetModel) xmlUnmarshaller.unmarshal(new 
ByteArrayInputStream(response.getBody()));
     List<RowModel> rows = cellSet.getRows();
-    assertTrue(rows.size() == 2);
+    assertEquals(2, rows.size());
     for (RowModel row : rows) {
-      assertTrue(row.getCells().size() == 1);
+      assertEquals(1, row.getCells().size());
       assertEquals(COLUMN_1, 
Bytes.toString(row.getCells().get(0).getColumn()));
     }
     response = deleteRow(TABLE, ROW_1);
diff --git 
a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestGzipFilter.java 
b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestGzipFilter.java
index fa3c0a228b8..7ffd1679908 100644
--- a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestGzipFilter.java
+++ b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestGzipFilter.java
@@ -17,15 +17,14 @@
  */
 package org.apache.hadoop.hbase.rest;
 
-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.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.util.zip.GZIPInputStream;
 import java.util.zip.GZIPOutputStream;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.HBaseTestingUtility;
 import org.apache.hadoop.hbase.HColumnDescriptor;
 import org.apache.hadoop.hbase.HTableDescriptor;
@@ -42,19 +41,15 @@ import org.apache.hadoop.hbase.testclassification.RestTests;
 import org.apache.hadoop.hbase.util.Bytes;
 import org.apache.http.Header;
 import org.apache.http.message.BasicHeader;
-import org.junit.AfterClass;
-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.BeforeAll;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
 
-@Category({ RestTests.class, MediumTests.class })
+@Tag(RestTests.TAG)
+@Tag(MediumTests.TAG)
 public class TestGzipFilter {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestGzipFilter.class);
-
   private static final TableName TABLE = TableName.valueOf("TestGzipFilter");
   private static final String CFA = "a";
   private static final String COLUMN_1 = CFA + ":1";
@@ -66,7 +61,7 @@ public class TestGzipFilter {
   private static final HBaseRESTTestingUtility REST_TEST_UTIL = new 
HBaseRESTTestingUtility();
   private static Client client;
 
-  @BeforeClass
+  @BeforeAll
   public static void setUpBeforeClass() throws Exception {
     TEST_UTIL.startMiniCluster();
     REST_TEST_UTIL.startServletContainer(TEST_UTIL.getConfiguration());
@@ -80,7 +75,7 @@ public class TestGzipFilter {
     admin.createTable(htd);
   }
 
-  @AfterClass
+  @AfterAll
   public static void tearDownAfterClass() throws Exception {
     REST_TEST_UTIL.shutdownServletContainer();
     TEST_UTIL.shutdownMiniCluster();
@@ -143,5 +138,4 @@ public class TestGzipFilter {
     response = client.get(scannerUrl);
     assertEquals(204, response.getCode());
   }
-
 }
diff --git 
a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestMultiRowResource.java
 
b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestMultiRowResource.java
index 03c3fe06859..1b39106af50 100644
--- 
a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestMultiRowResource.java
+++ 
b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestMultiRowResource.java
@@ -17,7 +17,7 @@
  */
 package org.apache.hadoop.hbase.rest;
 
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
 import java.io.IOException;
@@ -25,10 +25,9 @@ import java.net.URLEncoder;
 import java.nio.charset.StandardCharsets;
 import java.util.Base64;
 import java.util.Base64.Encoder;
-import java.util.Collection;
+import java.util.stream.Stream;
 import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
-import org.apache.hadoop.hbase.HBaseCommonTestingUtility;
+import org.apache.hadoop.hbase.HBaseParameterizedTestTemplate;
 import org.apache.hadoop.hbase.HBaseTestingUtility;
 import org.apache.hadoop.hbase.HColumnDescriptor;
 import org.apache.hadoop.hbase.HTableDescriptor;
@@ -45,23 +44,19 @@ import org.apache.hadoop.hbase.testclassification.RestTests;
 import org.apache.hadoop.hbase.util.Bytes;
 import org.apache.http.Header;
 import org.apache.http.message.BasicHeader;
-import org.junit.AfterClass;
-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.Tag;
+import org.junit.jupiter.api.TestTemplate;
+import org.junit.jupiter.params.provider.Arguments;
 
 import 
org.apache.hbase.thirdparty.com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider;
 import org.apache.hbase.thirdparty.javax.ws.rs.core.MediaType;
 
-@Category({ RestTests.class, MediumTests.class })
-@RunWith(Parameterized.class)
+@Tag(RestTests.TAG)
+@Tag(MediumTests.TAG)
+@HBaseParameterizedTestTemplate(name = "{index}: csrfEnabled = {0}")
 public class TestMultiRowResource {
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestMultiRowResource.class);
 
   private static final TableName TABLE = TableName.valueOf("TestRowResource");
   private static final String CFA = "a";
@@ -84,16 +79,15 @@ public class TestMultiRowResource {
   private static Header extraHdr = null;
   private static boolean csrfEnabled = true;
 
-  @Parameterized.Parameters
-  public static Collection<Object[]> data() {
-    return HBaseCommonTestingUtility.BOOLEAN_PARAMETERIZED;
+  public TestMultiRowResource(boolean csrf) {
+    csrfEnabled = csrf;
   }
 
-  public TestMultiRowResource(Boolean csrf) {
-    csrfEnabled = csrf;
+  public static Stream<Arguments> parameters() {
+    return Stream.of(Arguments.of(false), Arguments.of(true));
   }
 
-  @BeforeClass
+  @BeforeAll
   public static void setUpBeforeClass() throws Exception {
     conf = TEST_UTIL.getConfiguration();
     conf.setBoolean(RESTServer.REST_CSRF_ENABLED_KEY, csrfEnabled);
@@ -114,13 +108,13 @@ public class TestMultiRowResource {
     admin.createTable(htd);
   }
 
-  @AfterClass
+  @AfterAll
   public static void tearDownAfterClass() throws Exception {
     REST_TEST_UTIL.shutdownServletContainer();
     TEST_UTIL.shutdownMiniCluster();
   }
 
-  @Test
+  @TestTemplate
   public void testMultiCellGetJSON() throws IOException {
     String row_5_url = "/" + TABLE + "/" + ROW_1 + "/" + COLUMN_1;
     String row_6_url = "/" + TABLE + "/" + ROW_2 + "/" + COLUMN_2;
@@ -173,7 +167,7 @@ public class TestMultiRowResource {
   }
 
   // See https://issues.apache.org/jira/browse/HBASE-28174
-  @Test
+  @TestTemplate
   public void testMultiCellGetJSONB64() throws IOException {
     String row_5_url = "/" + TABLE + "/" + ROW_1 + "/" + COLUMN_1;
     String row_6_url = "/" + TABLE + "/" + ROW_2 + "/" + COLUMN_2;
@@ -191,9 +185,9 @@ public class TestMultiRowResource {
     path.append("/");
     path.append(TABLE);
     path.append("/multiget/?row=");
-    path.append(encoder.encodeToString(ROW_1.getBytes("UTF-8")));
+    
path.append(encoder.encodeToString(ROW_1.getBytes(StandardCharsets.UTF_8)));
     path.append("&row=");
-    path.append(encoder.encodeToString(ROW_2.getBytes("UTF-8")));
+    
path.append(encoder.encodeToString(ROW_2.getBytes(StandardCharsets.UTF_8)));
     path.append("&e=b64"); // Specify encoding via query string
 
     Response response = client.get(path.toString(), Constants.MIMETYPE_JSON);
@@ -204,9 +198,9 @@ public class TestMultiRowResource {
     path.append("/");
     path.append(TABLE);
     path.append("/multiget/?row=");
-    path.append(encoder.encodeToString(ROW_1.getBytes("UTF-8")));
+    
path.append(encoder.encodeToString(ROW_1.getBytes(StandardCharsets.UTF_8)));
     path.append("&row=");
-    path.append(encoder.encodeToString(ROW_2.getBytes("UTF-8")));
+    
path.append(encoder.encodeToString(ROW_2.getBytes(StandardCharsets.UTF_8)));
 
     Header[] headers = new Header[] { new BasicHeader("Accept", 
Constants.MIMETYPE_JSON),
       new BasicHeader("Encoding", "b64") // Specify encoding via header
@@ -219,7 +213,7 @@ public class TestMultiRowResource {
     client.delete(row_6_url, extraHdr);
   }
 
-  @Test
+  @TestTemplate
   public void testMultiCellGetNoKeys() throws IOException {
     StringBuilder path = new StringBuilder();
     path.append("/");
@@ -230,7 +224,7 @@ public class TestMultiRowResource {
     assertEquals(404, response.getCode());
   }
 
-  @Test
+  @TestTemplate
   public void testMultiCellGetXML() throws IOException {
     String row_5_url = "/" + TABLE + "/" + ROW_1 + "/" + COLUMN_1;
     String row_6_url = "/" + TABLE + "/" + ROW_2 + "/" + COLUMN_2;
@@ -254,7 +248,7 @@ public class TestMultiRowResource {
     client.delete(row_6_url, extraHdr);
   }
 
-  @Test
+  @TestTemplate
   public void testMultiCellGetWithColsJSON() throws IOException {
     String row_5_url = "/" + TABLE + "/" + ROW_1 + "/" + COLUMN_1;
     String row_6_url = "/" + TABLE + "/" + ROW_2 + "/" + COLUMN_2;
@@ -287,7 +281,7 @@ public class TestMultiRowResource {
     client.delete(row_6_url, extraHdr);
   }
 
-  @Test
+  @TestTemplate
   public void testMultiCellGetJSONNotFound() throws IOException {
     String row_5_url = "/" + TABLE + "/" + ROW_1 + "/" + COLUMN_1;
 
@@ -311,7 +305,7 @@ public class TestMultiRowResource {
     client.delete(row_5_url, extraHdr);
   }
 
-  @Test
+  @TestTemplate
   public void testMultiCellGetWithColsInQueryPathJSON() throws IOException {
     String row_5_url = "/" + TABLE + "/" + ROW_1 + "/" + COLUMN_1;
     String row_6_url = "/" + TABLE + "/" + ROW_2 + "/" + COLUMN_2;
@@ -344,7 +338,7 @@ public class TestMultiRowResource {
     client.delete(row_6_url, extraHdr);
   }
 
-  @Test
+  @TestTemplate
   public void testMultiCellGetFilterJSON() throws IOException {
     String row_5_url = "/" + TABLE + "/" + ROW_1 + "/" + COLUMN_1;
     String row_6_url = "/" + TABLE + "/" + ROW_2 + "/" + COLUMN_2;
@@ -371,7 +365,7 @@ public class TestMultiRowResource {
 
     // If the filter is used, then we get the same result
     String positivePath = path.toString() + ("&" + Constants.FILTER_B64 + "=" 
+ base64UrlEncoder
-      
.encodeToString("PrefixFilter('testrow')".getBytes(StandardCharsets.UTF_8.toString())));
+      
.encodeToString("PrefixFilter('testrow')".getBytes(StandardCharsets.UTF_8)));
     response = client.get(positivePath, Constants.MIMETYPE_JSON);
     checkMultiCellGetJSON(response);
 
@@ -383,7 +377,7 @@ public class TestMultiRowResource {
 
     // This filter doesn't match the found rows
     String negativePath = path.toString() + ("&" + Constants.FILTER_B64 + "=" 
+ base64UrlEncoder
-      
.encodeToString("PrefixFilter('notfound')".getBytes(StandardCharsets.UTF_8.toString())));
+      
.encodeToString("PrefixFilter('notfound')".getBytes(StandardCharsets.UTF_8)));
     response = client.get(negativePath, Constants.MIMETYPE_JSON);
     assertEquals(404, response.getCode());
 
@@ -409,5 +403,4 @@ public class TestMultiRowResource {
     client.delete(row_5_url, extraHdr);
     client.delete(row_6_url, extraHdr);
   }
-
 }
diff --git 
a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestNamespacesInstanceResource.java
 
b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestNamespacesInstanceResource.java
index 2d09ae0da4a..522e3ed0cf1 100644
--- 
a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestNamespacesInstanceResource.java
+++ 
b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestNamespacesInstanceResource.java
@@ -17,10 +17,10 @@
  */
 package org.apache.hadoop.hbase.rest;
 
-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 com.fasterxml.jackson.databind.ObjectMapper;
 import java.io.ByteArrayInputStream;
@@ -34,7 +34,6 @@ import java.util.Map;
 import javax.xml.bind.JAXBContext;
 import javax.xml.bind.JAXBException;
 import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.HBaseTestingUtility;
 import org.apache.hadoop.hbase.HColumnDescriptor;
 import org.apache.hadoop.hbase.HTableDescriptor;
@@ -52,30 +51,27 @@ import 
org.apache.hadoop.hbase.testclassification.MediumTests;
 import org.apache.hadoop.hbase.testclassification.RestTests;
 import org.apache.hadoop.hbase.util.Bytes;
 import org.apache.http.Header;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.Ignore;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
 
 import 
org.apache.hbase.thirdparty.com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider;
 import org.apache.hbase.thirdparty.javax.ws.rs.core.MediaType;
 
-@Category({ RestTests.class, MediumTests.class })
+@Tag(RestTests.TAG)
+@Tag(MediumTests.TAG)
 public class TestNamespacesInstanceResource {
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestNamespacesInstanceResource.class);
-
-  private static String NAMESPACE1 = "TestNamespacesInstanceResource1";
-  private static Map<String, String> NAMESPACE1_PROPS = new HashMap<>();
-  private static String NAMESPACE2 = "TestNamespacesInstanceResource2";
-  private static Map<String, String> NAMESPACE2_PROPS = new HashMap<>();
-  private static String NAMESPACE3 = "TestNamespacesInstanceResource3";
-  private static Map<String, String> NAMESPACE3_PROPS = new HashMap<>();
-  private static String NAMESPACE4 = "TestNamespacesInstanceResource4";
-  private static Map<String, String> NAMESPACE4_PROPS = new HashMap<>();
+
+  private static final String NAMESPACE1 = "TestNamespacesInstanceResource1";
+  private static final Map<String, String> NAMESPACE1_PROPS = new HashMap<>();
+  private static final String NAMESPACE2 = "TestNamespacesInstanceResource2";
+  private static final Map<String, String> NAMESPACE2_PROPS = new HashMap<>();
+  private static final String NAMESPACE3 = "TestNamespacesInstanceResource3";
+  private static final Map<String, String> NAMESPACE3_PROPS = new HashMap<>();
+  private static final String NAMESPACE4 = "TestNamespacesInstanceResource4";
+  private static final Map<String, String> NAMESPACE4_PROPS = new HashMap<>();
 
   private static final HBaseTestingUtility TEST_UTIL = new 
HBaseTestingUtility();
   private static final HBaseRESTTestingUtility REST_TEST_UTIL = new 
HBaseRESTTestingUtility();
@@ -85,7 +81,7 @@ public class TestNamespacesInstanceResource {
   private static TestNamespacesInstanceModel testNamespacesInstanceModel;
   protected static ObjectMapper jsonMapper;
 
-  @BeforeClass
+  @BeforeAll
   public static void setUpBeforeClass() throws Exception {
     conf = TEST_UTIL.getConfiguration();
     TEST_UTIL.startMiniCluster();
@@ -103,7 +99,7 @@ public class TestNamespacesInstanceResource {
     NAMESPACE4_PROPS.put("key4b", "value4b");
   }
 
-  @AfterClass
+  @AfterAll
   public static void tearDownAfterClass() throws Exception {
     REST_TEST_UTIL.shutdownServletContainer();
     TEST_UTIL.shutdownMiniCluster();
@@ -116,8 +112,9 @@ public class TestNamespacesInstanceResource {
   }
 
   @SuppressWarnings("unchecked")
-  private static <T> T fromXML(byte[] content) throws JAXBException {
-    return (T) context.createUnmarshaller().unmarshal(new 
ByteArrayInputStream(content));
+  private static <T> T fromXML(byte[] content, Class<T> clazz) throws 
JAXBException {
+    JAXBContext jaxbContext = JAXBContext.newInstance(clazz);
+    return (T) jaxbContext.createUnmarshaller().unmarshal(new 
ByteArrayInputStream(content));
   }
 
   private NamespaceDescriptor findNamespace(Admin admin, String namespaceName) 
throws IOException {
@@ -136,7 +133,7 @@ public class TestNamespacesInstanceResource {
 
   private void checkNamespaceProperties(Map<String, String> namespaceProps,
     Map<String, String> testProps) {
-    assertTrue(namespaceProps.size() == testProps.size());
+    assertEquals(namespaceProps.size(), testProps.size());
     for (String key : testProps.keySet()) {
       assertEquals(testProps.get(key), namespaceProps.get(key));
     }
@@ -205,7 +202,7 @@ public class TestNamespacesInstanceResource {
 
     response = client.get(namespacePath, Constants.MIMETYPE_XML);
     assertEquals(200, response.getCode());
-    NamespacesInstanceModel model = fromXML(response.getBody());
+    NamespacesInstanceModel model = fromXML(response.getBody(), 
NamespacesInstanceModel.class);
     checkNamespaceProperties(model.getProperties(), nsProperties);
 
     response = client.get(namespacePath, Constants.MIMETYPE_JSON);
@@ -225,7 +222,7 @@ public class TestNamespacesInstanceResource {
 
     response = client.get(namespacePath, Constants.MIMETYPE_XML);
     assertEquals(200, response.getCode());
-    TableListModel tablemodel = fromXML(response.getBody());
+    TableListModel tablemodel = fromXML(response.getBody(), 
TableListModel.class);
     checkNamespaceTables(tablemodel.getTables(), nsTables);
 
     response = client.get(namespacePath, Constants.MIMETYPE_JSON);
@@ -245,7 +242,7 @@ public class TestNamespacesInstanceResource {
     assertEquals(503, response.getCode());
   }
 
-  @Ignore("HBASE-19210")
+  @Disabled("HBASE-19210")
   @Test
   public void testInvalidNamespacePostsAndPuts() throws IOException, 
JAXBException {
     String namespacePath1 = "/namespaces/" + NAMESPACE1;
diff --git 
a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestNamespacesResource.java
 
b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestNamespacesResource.java
index 4802d230fac..a0489e7ee7a 100644
--- 
a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestNamespacesResource.java
+++ 
b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestNamespacesResource.java
@@ -17,15 +17,14 @@
  */
 package org.apache.hadoop.hbase.rest;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
 
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import javax.xml.bind.JAXBContext;
 import javax.xml.bind.JAXBException;
 import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.HBaseTestingUtility;
 import org.apache.hadoop.hbase.NamespaceDescriptor;
 import org.apache.hadoop.hbase.client.Admin;
@@ -37,17 +36,14 @@ import 
org.apache.hadoop.hbase.rest.model.TestNamespacesModel;
 import org.apache.hadoop.hbase.testclassification.MediumTests;
 import org.apache.hadoop.hbase.testclassification.RestTests;
 import org.apache.hadoop.hbase.util.Bytes;
-import org.junit.AfterClass;
-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.BeforeAll;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
 
-@Category({ RestTests.class, MediumTests.class })
+@Tag(RestTests.TAG)
+@Tag(MediumTests.TAG)
 public class TestNamespacesResource {
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestNamespacesResource.class);
 
   private static String NAMESPACE1 = "TestNamespacesInstanceResource1";
   private static String NAMESPACE2 = "TestNamespacesInstanceResource2";
@@ -59,7 +55,7 @@ public class TestNamespacesResource {
   private static Configuration conf;
   private static TestNamespacesModel testNamespacesModel;
 
-  @BeforeClass
+  @BeforeAll
   public static void setUpBeforeClass() throws Exception {
     conf = TEST_UTIL.getConfiguration();
     TEST_UTIL.startMiniCluster();
@@ -69,7 +65,7 @@ public class TestNamespacesResource {
     context = JAXBContext.newInstance(NamespacesModel.class);
   }
 
-  @AfterClass
+  @AfterAll
   public static void tearDownAfterClass() throws Exception {
     REST_TEST_UTIL.shutdownServletContainer();
     TEST_UTIL.shutdownMiniCluster();
diff --git 
a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestRESTServerSSL.java 
b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestRESTServerSSL.java
index 5731dd94fc6..a6f98a0860b 100644
--- 
a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestRESTServerSSL.java
+++ 
b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestRESTServerSSL.java
@@ -17,7 +17,8 @@
  */
 package org.apache.hadoop.hbase.rest;
 
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
 
 import java.io.File;
 import java.lang.reflect.Method;
@@ -25,7 +26,6 @@ import java.security.KeyPair;
 import java.security.cert.X509Certificate;
 import java.util.Optional;
 import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.HBaseTestingUtility;
 import org.apache.hadoop.hbase.http.ssl.KeyStoreTestUtil;
 import org.apache.hadoop.hbase.rest.client.Client;
@@ -33,23 +33,20 @@ import org.apache.hadoop.hbase.rest.client.Cluster;
 import org.apache.hadoop.hbase.rest.client.Response;
 import org.apache.hadoop.hbase.testclassification.MediumTests;
 import org.apache.hadoop.hbase.testclassification.RestTests;
-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.apache.http.client.ClientProtocolException;
+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;
 
-@Category({ RestTests.class, MediumTests.class })
+@Tag(RestTests.TAG)
+@Tag(MediumTests.TAG)
 public class TestRESTServerSSL {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestRESTServerSSL.class);
-
   private static final Logger LOG = 
LoggerFactory.getLogger(TestRESTServerSSL.class);
 
   private static final String KEY_STORE_PASSWORD = "myKSPassword";
@@ -75,7 +72,7 @@ public class TestRESTServerSSL {
     }
   }
 
-  @BeforeClass
+  @BeforeAll
   public static void beforeClass() throws Exception {
     initializeAlgorithmId();
     keyDir = initKeystoreDir();
@@ -94,14 +91,14 @@ public class TestRESTServerSSL {
     TEST_UTIL.startMiniCluster();
   }
 
-  @AfterClass
+  @AfterAll
   public static void afterClass() throws Exception {
     // this will also delete the generated test keystore / teststore files,
     // as we were placing them under the dataTestDir used by the minicluster
     TEST_UTIL.shutdownMiniCluster();
   }
 
-  @Before
+  @BeforeEach
   public void beforeEachTest() {
     conf = new Configuration(TEST_UTIL.getConfiguration());
     conf.set(Constants.REST_SSL_ENABLED, "true");
@@ -110,7 +107,7 @@ public class TestRESTServerSSL {
     conf.set(Constants.REST_SSL_TRUSTSTORE_PASSWORD, TRUST_STORE_PASSWORD);
   }
 
-  @After
+  @AfterEach
   public void tearDownAfterTest() {
     REST_TEST_UTIL.shutdownServletContainer();
   }
@@ -129,14 +126,14 @@ public class TestRESTServerSSL {
       response.getHeader("Content-Security-Policy"));
   }
 
-  @Test(expected = org.apache.http.client.ClientProtocolException.class)
+  @Test
   public void testNonSslClientDenied() throws Exception {
     startRESTServerWithDefaultKeystoreType();
 
     Cluster localCluster = new Cluster().add("localhost", 
REST_TEST_UTIL.getServletPort());
     Client nonSslClient = new Client(localCluster, false);
 
-    nonSslClient.get("/version");
+    assertThrows(ClientProtocolException.class, () -> 
nonSslClient.get("/version"));
   }
 
   @Test
@@ -214,5 +211,4 @@ public class TestRESTServerSSL {
     sslClient = new Client(localCluster, getTruststoreFilePath(storeType),
       Optional.of(TRUST_STORE_PASSWORD), Optional.of(storeType));
   }
-
 }
diff --git 
a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestResourceFilter.java 
b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestResourceFilter.java
index 4168c75a7c5..1bbe9954efc 100644
--- 
a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestResourceFilter.java
+++ 
b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestResourceFilter.java
@@ -17,33 +17,28 @@
  */
 package org.apache.hadoop.hbase.rest;
 
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.HBaseTestingUtility;
 import org.apache.hadoop.hbase.rest.client.Client;
 import org.apache.hadoop.hbase.rest.client.Cluster;
 import org.apache.hadoop.hbase.rest.client.Response;
 import org.apache.hadoop.hbase.testclassification.MediumTests;
 import org.apache.hadoop.hbase.testclassification.RestTests;
-import org.junit.AfterClass;
-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.BeforeAll;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
 
-@Category({ RestTests.class, MediumTests.class })
+@Tag(RestTests.TAG)
+@Tag(MediumTests.TAG)
 public class TestResourceFilter {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestResourceFilter.class);
-
   private static final HBaseTestingUtility TEST_UTIL = new 
HBaseTestingUtility();
   private static final HBaseRESTTestingUtility REST_TEST_UTIL = new 
HBaseRESTTestingUtility();
   private static Client client;
 
-  @BeforeClass
+  @BeforeAll
   public static void setUpBeforeClass() throws Exception {
     TEST_UTIL.getConfiguration().set(Constants.FILTER_CLASSES, 
DummyFilter.class.getName());
     TEST_UTIL.startMiniCluster();
@@ -51,7 +46,7 @@ public class TestResourceFilter {
     client = new Client(new Cluster().add("localhost", 
REST_TEST_UTIL.getServletPort()));
   }
 
-  @AfterClass
+  @AfterAll
   public static void tearDownAfterClass() throws Exception {
     REST_TEST_UTIL.shutdownServletContainer();
     TEST_UTIL.shutdownMiniCluster();
diff --git 
a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestScannerResource.java
 
b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestScannerResource.java
index 646328b1f49..7f7c527cc06 100644
--- 
a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestScannerResource.java
+++ 
b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestScannerResource.java
@@ -17,10 +17,10 @@
  */
 package org.apache.hadoop.hbase.rest;
 
-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.ByteArrayInputStream;
 import java.io.IOException;
@@ -36,7 +36,6 @@ import javax.xml.bind.Marshaller;
 import javax.xml.bind.Unmarshaller;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.hbase.CellUtil;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.HBaseTestingUtility;
 import org.apache.hadoop.hbase.HColumnDescriptor;
 import org.apache.hadoop.hbase.HTableDescriptor;
@@ -58,22 +57,15 @@ import 
org.apache.hadoop.hbase.testclassification.MediumTests;
 import org.apache.hadoop.hbase.testclassification.RestTests;
 import org.apache.hadoop.hbase.util.Bytes;
 import org.apache.http.Header;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-@Category({ RestTests.class, MediumTests.class })
-public class TestScannerResource {
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestScannerResource.class);
+@Tag(RestTests.TAG)
+@Tag(MediumTests.TAG)
+public class TestScannerResource {
 
-  private static final Logger LOG = 
LoggerFactory.getLogger(TestScannerResource.class);
   private static final TableName TABLE = 
TableName.valueOf("TestScannerResource");
   private static final TableName TABLE_TO_BE_DISABLED = 
TableName.valueOf("ScannerResourceDisable");
   private static final String NONEXISTENT_TABLE = "ThisTableDoesNotExist";
@@ -168,7 +160,7 @@ public class TestScannerResource {
     return count;
   }
 
-  @BeforeClass
+  @BeforeAll
   public static void setUpBeforeClass() throws Exception {
     conf = TEST_UTIL.getConfiguration();
     TEST_UTIL.startMiniCluster();
@@ -195,7 +187,7 @@ public class TestScannerResource {
     admin.createTable(htd);
   }
 
-  @AfterClass
+  @AfterAll
   public static void tearDownAfterClass() throws Exception {
     REST_TEST_UTIL.shutdownServletContainer();
     TEST_UTIL.shutdownMiniCluster();
@@ -384,7 +376,7 @@ public class TestScannerResource {
     assertNotNull(scannerURI);
     TEST_UTIL.getAdmin().disableTable(TABLE_TO_BE_DISABLED);
     response = client.get(scannerURI, Constants.MIMETYPE_PROTOBUF);
-    assertTrue("got " + response.getCode(), response.getCode() == 410);
+    assertEquals(410, response.getCode(), "got " + response.getCode());
   }
 
   @Test
diff --git 
a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestScannersWithFilters.java
 
b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestScannersWithFilters.java
index 88e685ec077..ee27be9523a 100644
--- 
a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestScannersWithFilters.java
+++ 
b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestScannersWithFilters.java
@@ -17,9 +17,9 @@
  */
 package org.apache.hadoop.hbase.rest;
 
-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.io.ByteArrayInputStream;
 import java.io.StringWriter;
@@ -32,7 +32,6 @@ import javax.xml.bind.Marshaller;
 import javax.xml.bind.Unmarshaller;
 import org.apache.hadoop.hbase.CellUtil;
 import org.apache.hadoop.hbase.CompareOperator;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.HBaseTestingUtility;
 import org.apache.hadoop.hbase.HColumnDescriptor;
 import org.apache.hadoop.hbase.HConstants;
@@ -72,19 +71,16 @@ import 
org.apache.hadoop.hbase.testclassification.MediumTests;
 import org.apache.hadoop.hbase.testclassification.RestTests;
 import org.apache.hadoop.hbase.util.Bytes;
 import org.apache.hadoop.hbase.util.Pair;
-import org.junit.AfterClass;
-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.BeforeAll;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-@Category({ RestTests.class, MediumTests.class })
+@Tag(RestTests.TAG)
+@Tag(MediumTests.TAG)
 public class TestScannersWithFilters {
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestScannersWithFilters.class);
 
   private static final Logger LOG = 
LoggerFactory.getLogger(TestScannersWithFilters.class);
 
@@ -119,7 +115,7 @@ public class TestScannersWithFilters {
   private static long numRows = (long) ROWS_ONE.length + ROWS_TWO.length;
   private static long colsPerRow = (long) FAMILIES.length * 
QUALIFIERS_ONE.length;
 
-  @BeforeClass
+  @BeforeAll
   public static void setUpBeforeClass() throws Exception {
     TEST_UTIL.startMiniCluster(3);
     REST_TEST_UTIL.startServletContainer(TEST_UTIL.getConfiguration());
@@ -204,7 +200,7 @@ public class TestScannersWithFilters {
     }
   }
 
-  @AfterClass
+  @AfterAll
   public static void tearDownAfterClass() throws Exception {
     REST_TEST_UTIL.shutdownServletContainer();
     TEST_UTIL.shutdownMiniCluster();
@@ -230,13 +226,12 @@ public class TestScannersWithFilters {
       (CellSetModel) unmarshaller.unmarshal(new 
ByteArrayInputStream(response.getBody()));
 
     int rows = cells.getRows().size();
-    assertEquals(
-      "Unexpected number of rows! Expected " + expectedRows + " total but 
scanned " + rows,
-      expectedRows, rows);
+    assertEquals(expectedRows, rows,
+      "Unexpected number of rows! Expected " + expectedRows + " total but 
scanned " + rows);
     for (RowModel row : cells.getRows()) {
       int count = row.getCells().size();
-      assertEquals("Expected " + expectedKeys + " keys per row but " + 
"returned " + count,
-        expectedKeys, count);
+      assertEquals(expectedKeys, count,
+        "Expected " + expectedKeys + " keys per row but " + "returned " + 
count);
     }
 
     // delete the scanner
@@ -282,18 +277,18 @@ public class TestScannersWithFilters {
         break;
       }
 
-      assertTrue("Scanned too many keys! Only expected " + kvs.length
-        + " total but already scanned " + (cells.size() + idx), kvs.length >= 
idx + cells.size());
+      assertTrue(kvs.length >= idx + cells.size(), "Scanned too many keys! 
Only expected "
+        + kvs.length + " total but already scanned " + (cells.size() + idx));
       for (CellModel cell : cells) {
-        assertTrue("Row mismatch", Bytes.equals(rowModel.getKey(), 
CellUtil.cloneRow(kvs[idx])));
+        assertTrue(Bytes.equals(rowModel.getKey(), 
CellUtil.cloneRow(kvs[idx])), "Row mismatch");
         byte[][] split = CellUtil.parseColumn(cell.getColumn());
-        assertTrue("Family mismatch", Bytes.equals(split[0], 
CellUtil.cloneFamily(kvs[idx])));
-        assertTrue("Qualifier mismatch", Bytes.equals(split[1], 
CellUtil.cloneQualifier(kvs[idx])));
-        assertTrue("Value mismatch", Bytes.equals(cell.getValue(), 
CellUtil.cloneValue(kvs[idx])));
+        assertTrue(Bytes.equals(split[0], CellUtil.cloneFamily(kvs[idx])), 
"Family mismatch");
+        assertTrue(Bytes.equals(split[1], CellUtil.cloneQualifier(kvs[idx])), 
"Qualifier mismatch");
+        assertTrue(Bytes.equals(cell.getValue(), 
CellUtil.cloneValue(kvs[idx])), "Value mismatch");
         idx++;
       }
     }
-    assertEquals("Expected " + kvs.length + " total keys but scanned " + idx, 
kvs.length, idx);
+    assertEquals(kvs.length, idx, "Expected " + kvs.length + " total keys but 
scanned " + idx);
   }
 
   private static void verifyScanNoEarlyOut(Scan s, long expectedRows, long 
expectedKeys)
@@ -334,12 +329,12 @@ public class TestScannersWithFilters {
         break;
       }
 
-      assertTrue("Scanned too many rows! Only expected " + expectedRows
-        + " total but already scanned " + (j + 1), expectedRows > j);
-      assertEquals("Expected " + expectedKeys + " keys per row but " + 
"returned " + cells.size(),
-        expectedKeys, cells.size());
+      assertTrue(expectedRows > j, "Scanned too many rows! Only expected " + 
expectedRows
+        + " total but already scanned " + (j + 1));
+      assertEquals(expectedKeys, cells.size(),
+        "Expected " + expectedKeys + " keys per row but " + "returned " + 
cells.size());
     }
-    assertEquals("Expected " + expectedRows + " rows but scanned " + j + " 
rows", expectedRows, j);
+    assertEquals(expectedRows, j, "Expected " + expectedRows + " rows but 
scanned " + j + " rows");
   }
 
   @Test
diff --git 
a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestScannersWithLabels.java
 
b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestScannersWithLabels.java
index a17ebb1789d..7f4dd3f7a49 100644
--- 
a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestScannersWithLabels.java
+++ 
b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestScannersWithLabels.java
@@ -17,8 +17,8 @@
  */
 package org.apache.hadoop.hbase.rest;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
 
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
@@ -33,7 +33,6 @@ import javax.xml.bind.Marshaller;
 import javax.xml.bind.Unmarshaller;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.hbase.CellUtil;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.HBaseTestingUtility;
 import org.apache.hadoop.hbase.HColumnDescriptor;
 import org.apache.hadoop.hbase.HTableDescriptor;
@@ -63,17 +62,14 @@ import 
org.apache.hadoop.hbase.security.visibility.VisibilityUtils;
 import org.apache.hadoop.hbase.testclassification.MediumTests;
 import org.apache.hadoop.hbase.testclassification.RestTests;
 import org.apache.hadoop.hbase.util.Bytes;
-import org.junit.AfterClass;
-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.BeforeAll;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
 
-@Category({ RestTests.class, MediumTests.class })
+@Tag(RestTests.TAG)
+@Tag(MediumTests.TAG)
 public class TestScannersWithLabels {
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestScannersWithLabels.class);
 
   private static final TableName TABLE = 
TableName.valueOf("TestScannersWithLabels");
   private static final String CFA = "a";
@@ -129,7 +125,7 @@ public class TestScannersWithLabels {
     return count;
   }
 
-  @BeforeClass
+  @BeforeAll
   public static void setUpBeforeClass() throws Exception {
     SUPERUSER = User.createUserForTesting(conf, "admin", new String[] { 
"supergroup" });
     conf = TEST_UTIL.getConfiguration();
@@ -160,7 +156,7 @@ public class TestScannersWithLabels {
     insertData(TABLE, COLUMN_2, 0.5);
   }
 
-  @AfterClass
+  @AfterAll
   public static void tearDownAfterClass() throws Exception {
     REST_TEST_UTIL.shutdownServletContainer();
     TEST_UTIL.shutdownMiniCluster();
diff --git 
a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestSchemaResource.java 
b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestSchemaResource.java
index 191eae70d3f..3a8905cc640 100644
--- 
a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestSchemaResource.java
+++ 
b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestSchemaResource.java
@@ -17,19 +17,18 @@
  */
 package org.apache.hadoop.hbase.rest;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
 
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.io.StringWriter;
-import java.util.Collection;
+import java.util.stream.Stream;
 import javax.xml.bind.JAXBContext;
 import javax.xml.bind.JAXBException;
 import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
-import org.apache.hadoop.hbase.HBaseCommonTestingUtility;
+import org.apache.hadoop.hbase.HBaseParameterizedTestTemplate;
 import org.apache.hadoop.hbase.HBaseTestingUtility;
 import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.client.Admin;
@@ -44,21 +43,17 @@ import org.apache.hadoop.hbase.testclassification.RestTests;
 import org.apache.hadoop.hbase.util.Bytes;
 import org.apache.http.Header;
 import org.apache.http.message.BasicHeader;
-import org.junit.After;
-import org.junit.AfterClass;
-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;
-
-@Category({ RestTests.class, MediumTests.class })
-@RunWith(Parameterized.class)
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.TestTemplate;
+import org.junit.jupiter.params.provider.Arguments;
+
+@Tag(RestTests.TAG)
+@Tag(MediumTests.TAG)
+@HBaseParameterizedTestTemplate(name = "{index}: csrfEnabled = {0}")
 public class TestSchemaResource {
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestSchemaResource.class);
 
   private static String TABLE1 = "TestSchemaResource1";
   private static String TABLE2 = "TestSchemaResource2";
@@ -73,16 +68,15 @@ public class TestSchemaResource {
 
   private static boolean csrfEnabled = true;
 
-  @Parameterized.Parameters
-  public static Collection<Object[]> parameters() {
-    return HBaseCommonTestingUtility.BOOLEAN_PARAMETERIZED;
+  public TestSchemaResource(boolean csrf) {
+    csrfEnabled = csrf;
   }
 
-  public TestSchemaResource(Boolean csrf) {
-    csrfEnabled = csrf;
+  public static Stream<Arguments> parameters() {
+    return Stream.of(Arguments.of(false), Arguments.of(true));
   }
 
-  @BeforeClass
+  @BeforeAll
   public static void setUpBeforeClass() throws Exception {
     conf = TEST_UTIL.getConfiguration();
     conf.setBoolean(RESTServer.REST_CSRF_ENABLED_KEY, csrfEnabled);
@@ -97,13 +91,13 @@ public class TestSchemaResource {
     context = JAXBContext.newInstance(ColumnSchemaModel.class, 
TableSchemaModel.class);
   }
 
-  @AfterClass
+  @AfterAll
   public static void tearDownAfterClass() throws Exception {
     REST_TEST_UTIL.shutdownServletContainer();
     TEST_UTIL.shutdownMiniCluster();
   }
 
-  @After
+  @AfterEach
   public void tearDown() throws Exception {
     Admin admin = TEST_UTIL.getAdmin();
 
@@ -129,15 +123,15 @@ public class TestSchemaResource {
       .unmarshal(new ByteArrayInputStream(content));
   }
 
-  @Test
+  @TestTemplate
   public void testTableCreateAndDeleteXML() throws IOException, JAXBException {
     String schemaPath = "/" + TABLE1 + "/schema";
     TableSchemaModel model;
     Response response;
 
     Admin admin = TEST_UTIL.getAdmin();
-    assertFalse("Table " + TABLE1 + " should not exist",
-      admin.tableExists(TableName.valueOf(TABLE1)));
+    assertFalse(admin.tableExists(TableName.valueOf(TABLE1)),
+      "Table " + TABLE1 + " should not exist");
 
     // create the table
     model = testTableSchemaModel.buildTestModel(TABLE1);
@@ -149,8 +143,8 @@ public class TestSchemaResource {
     }
 
     response = client.put(schemaPath, Constants.MIMETYPE_XML, toXML(model), 
extraHdr);
-    assertEquals("put failed with csrf " + (csrfEnabled ? "enabled" : 
"disabled"), 201,
-      response.getCode());
+    assertEquals(201, response.getCode(),
+      "put failed with csrf " + (csrfEnabled ? "enabled" : "disabled"));
 
     // recall the same put operation but in read-only mode
     conf.set("hbase.rest.readonly", "true");
@@ -190,7 +184,7 @@ public class TestSchemaResource {
     assertFalse(admin.tableExists(TableName.valueOf(TABLE1)));
   }
 
-  @Test
+  @TestTemplate
   public void testTableCreateAndDeletePB() throws IOException {
     String schemaPath = "/" + TABLE2 + "/schema";
     TableSchemaModel model;
@@ -210,8 +204,8 @@ public class TestSchemaResource {
     }
     response =
       client.put(schemaPath, Constants.MIMETYPE_PROTOBUF, 
model.createProtobufOutput(), extraHdr);
-    assertEquals("put failed with csrf " + (csrfEnabled ? "enabled" : 
"disabled"), 201,
-      response.getCode());
+    assertEquals(201, response.getCode(),
+      "put failed with csrf " + (csrfEnabled ? "enabled" : "disabled"));
 
     // recall the same put operation but in read-only mode
     conf.set("hbase.rest.readonly", "true");
diff --git 
a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestSecureRESTServer.java
 
b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestSecureRESTServer.java
index 48ef22355e9..38d9637794f 100644
--- 
a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestSecureRESTServer.java
+++ 
b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestSecureRESTServer.java
@@ -18,8 +18,8 @@
 package org.apache.hadoop.hbase.rest;
 
 import static 
org.apache.hadoop.hbase.rest.RESTServlet.HBASE_REST_SUPPORT_PROXYUSER;
-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 com.fasterxml.jackson.databind.ObjectMapper;
 import java.io.File;
@@ -30,7 +30,6 @@ import java.security.Principal;
 import java.security.PrivilegedExceptionAction;
 import org.apache.commons.io.FileUtils;
 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.StartMiniClusterOption;
@@ -86,11 +85,10 @@ import org.apache.http.impl.client.CloseableHttpClient;
 import org.apache.http.impl.client.HttpClients;
 import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
 import org.apache.http.util.EntityUtils;
-import org.junit.AfterClass;
-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.BeforeAll;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -101,13 +99,10 @@ import 
org.apache.hbase.thirdparty.javax.ws.rs.core.MediaType;
  * Test class for SPNEGO authentication on the HttpServer. Uses Kerby's 
MiniKDC and Apache
  * HttpComponents to verify that a simple Servlet is reachable via SPNEGO and 
unreachable w/o.
  */
-@Category({ MiscTests.class, MediumTests.class })
+@Tag(MiscTests.TAG)
+@Tag(MediumTests.TAG)
 public class TestSecureRESTServer {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestSecureRESTServer.class);
-
   private static final Logger LOG = 
LoggerFactory.getLogger(TestSecureRESTServer.class);
   private static final HBaseTestingUtility TEST_UTIL = new 
HBaseTestingUtility();
   private static final HBaseRESTTestingUtility REST_TEST = new 
HBaseRESTTestingUtility();
@@ -130,7 +125,7 @@ public class TestSecureRESTServer {
   private static File wheelKeytab;
   private static File serviceKeytab;
 
-  @BeforeClass
+  @BeforeAll
   public static void setupServer() throws Exception {
     final File target = new File(System.getProperty("user.dir"), "target");
     assertTrue(target.exists());
@@ -235,7 +230,7 @@ public class TestSecureRESTServer {
     instertData();
   }
 
-  @AfterClass
+  @AfterAll
   public static void stopServer() throws Exception {
     try {
       if (null != server) {
@@ -356,7 +351,7 @@ public class TestSecureRESTServer {
       public String run() throws Exception {
         try (CloseableHttpResponse response = client.execute(get, context)) {
           final int statusCode = response.getStatusLine().getStatusCode();
-          assertEquals(response.getStatusLine().toString(), responseCode, 
statusCode);
+          assertEquals(responseCode, statusCode, 
response.getStatusLine().toString());
           HttpEntity entity = response.getEntity();
           return EntityUtils.toString(entity);
         }
@@ -414,8 +409,8 @@ public class TestSecureRESTServer {
         try (CloseableHttpResponse response = client.execute(put, context)) {
           final int statusCode = response.getStatusLine().getStatusCode();
           HttpEntity entity = response.getEntity();
-          assertEquals("Got response: " + EntityUtils.toString(entity),
-            HttpURLConnection.HTTP_FORBIDDEN, statusCode);
+          assertEquals(HttpURLConnection.HTTP_FORBIDDEN, statusCode,
+            "Got response: " + EntityUtils.toString(entity));
         }
         return null;
       }
diff --git 
a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestSecurityHeadersFilter.java
 
b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestSecurityHeadersFilter.java
index 6a24d6ac59b..549a645deb1 100644
--- 
a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestSecurityHeadersFilter.java
+++ 
b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestSecurityHeadersFilter.java
@@ -22,30 +22,25 @@ import static org.hamcrest.MatcherAssert.assertThat;
 import static org.hamcrest.core.Is.is;
 import static org.hamcrest.core.IsEqual.equalTo;
 
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.HBaseTestingUtility;
 import org.apache.hadoop.hbase.rest.client.Client;
 import org.apache.hadoop.hbase.rest.client.Cluster;
 import org.apache.hadoop.hbase.rest.client.Response;
 import org.apache.hadoop.hbase.testclassification.MediumTests;
 import org.apache.hadoop.hbase.testclassification.RestTests;
-import org.junit.After;
-import org.junit.ClassRule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
 
-@Category({ RestTests.class, MediumTests.class })
+@Tag(RestTests.TAG)
+@Tag(MediumTests.TAG)
 public class TestSecurityHeadersFilter {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestSecurityHeadersFilter.class);
-
   private static final HBaseTestingUtility TEST_UTIL = new 
HBaseTestingUtility();
   private static final HBaseRESTTestingUtility REST_TEST_UTIL = new 
HBaseRESTTestingUtility();
   private static Client client;
 
-  @After
+  @AfterEach
   public void tearDown() throws Exception {
     REST_TEST_UTIL.shutdownServletContainer();
     TEST_UTIL.shutdownMiniCluster();
diff --git 
a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestStatusResource.java 
b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestStatusResource.java
index 28bf14d7a75..77c7b079831 100644
--- 
a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestStatusResource.java
+++ 
b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestStatusResource.java
@@ -17,17 +17,16 @@
  */
 package org.apache.hadoop.hbase.rest;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-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.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
 
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import javax.xml.bind.JAXBContext;
 import javax.xml.bind.JAXBException;
 import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.HBaseTestingUtility;
 import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.Waiter;
@@ -38,23 +37,15 @@ import 
org.apache.hadoop.hbase.rest.model.StorageClusterStatusModel;
 import org.apache.hadoop.hbase.testclassification.MediumTests;
 import org.apache.hadoop.hbase.testclassification.RestTests;
 import org.apache.hadoop.hbase.util.Bytes;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
 
-@Category({ RestTests.class, MediumTests.class })
+@Tag(RestTests.TAG)
+@Tag(MediumTests.TAG)
 public class TestStatusResource {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestStatusResource.class);
-
-  private static final Logger LOG = 
LoggerFactory.getLogger(TestStatusResource.class);
-
   private static final byte[] META_REGION_NAME = 
Bytes.toBytes(TableName.META_TABLE_NAME + ",,1");
 
   private static final HBaseTestingUtility TEST_UTIL = new 
HBaseTestingUtility();
@@ -85,7 +76,7 @@ public class TestStatusResource {
     assertTrue(foundMeta);
   }
 
-  @BeforeClass
+  @BeforeAll
   public static void setUpBeforeClass() throws Exception {
     conf = TEST_UTIL.getConfiguration();
     TEST_UTIL.startMiniCluster();
@@ -104,7 +95,7 @@ public class TestStatusResource {
     });
   }
 
-  @AfterClass
+  @AfterAll
   public static void tearDownAfterClass() throws Exception {
     REST_TEST_UTIL.shutdownServletContainer();
     TEST_UTIL.shutdownMiniCluster();
diff --git 
a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestTableResource.java 
b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestTableResource.java
index 097d3566435..c58e39f5b29 100644
--- 
a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestTableResource.java
+++ 
b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestTableResource.java
@@ -17,8 +17,8 @@
  */
 package org.apache.hadoop.hbase.rest;
 
-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.ByteArrayInputStream;
 import java.io.IOException;
@@ -29,7 +29,6 @@ import java.util.List;
 import javax.xml.bind.JAXBContext;
 import javax.xml.bind.JAXBException;
 import org.apache.hadoop.hbase.CellUtil;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.HBaseTestingUtility;
 import org.apache.hadoop.hbase.HRegionInfo;
 import org.apache.hadoop.hbase.HRegionLocation;
@@ -50,21 +49,17 @@ import org.apache.hadoop.hbase.rest.model.TableRegionModel;
 import org.apache.hadoop.hbase.testclassification.MediumTests;
 import org.apache.hadoop.hbase.testclassification.RestTests;
 import org.apache.hadoop.hbase.util.Bytes;
-import org.junit.AfterClass;
-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.BeforeAll;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-@Category({ RestTests.class, MediumTests.class })
+@Tag(RestTests.TAG)
+@Tag(MediumTests.TAG)
 public class TestTableResource {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestTableResource.class);
-
   private static final Logger LOG = 
LoggerFactory.getLogger(TestTableResource.class);
 
   private static final TableName TABLE = 
TableName.valueOf("TestTableResource");
@@ -78,7 +73,7 @@ public class TestTableResource {
   private static Client client;
   private static JAXBContext context;
 
-  @BeforeClass
+  @BeforeAll
   public static void setUpBeforeClass() throws Exception {
     TEST_UTIL.startMiniCluster(3);
     REST_TEST_UTIL.startServletContainer(TEST_UTIL.getConfiguration());
@@ -115,11 +110,11 @@ public class TestTableResource {
     // should have four regions now
     assertEquals(NUM_REGIONS, m.size());
     regionMap = m;
-    LOG.error("regions: " + regionMap);
+    LOG.error("regions: {}", regionMap);
     regionLocator.close();
   }
 
-  @AfterClass
+  @AfterAll
   public static void tearDownAfterClass() throws Exception {
     REST_TEST_UTIL.shutdownServletContainer();
     TEST_UTIL.shutdownMiniCluster();
@@ -146,14 +141,14 @@ public class TestTableResource {
     while (regions.hasNext()) {
       TableRegionModel region = regions.next();
       boolean found = false;
-      LOG.debug("looking for region " + region.getName());
+      LOG.debug("looking for region {}", region.getName());
       for (HRegionLocation e : regionMap) {
         HRegionInfo hri = e.getRegionInfo();
         // getRegionNameAsString uses Bytes.toStringBinary which escapes some 
non-printable
         // characters
         String hriRegionName = Bytes.toString(hri.getRegionName());
         String regionName = region.getName();
-        LOG.debug("comparing to region " + hriRegionName);
+        LOG.debug("comparing to region {}", hriRegionName);
         if (hriRegionName.equals(regionName)) {
           found = true;
           byte[] startKey = hri.getStartKey();
@@ -169,7 +164,7 @@ public class TestTableResource {
           break;
         }
       }
-      assertTrue("Couldn't find region " + region.getName(), found);
+      assertTrue(found, "Couldn't find region " + region.getName());
     }
   }
 
@@ -261,5 +256,4 @@ public class TestTableResource {
     Response response2 = client.get("/" + notExistTable + "/regions", 
Constants.MIMETYPE_XML);
     assertEquals(404, response2.getCode());
   }
-
 }
diff --git 
a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestTableScan.java 
b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestTableScan.java
index 56afb68537b..b43dd4e883b 100644
--- a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestTableScan.java
+++ b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestTableScan.java
@@ -17,10 +17,10 @@
  */
 package org.apache.hadoop.hbase.rest;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-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.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import com.fasterxml.jackson.core.JsonFactory;
 import com.fasterxml.jackson.core.JsonParser;
@@ -46,7 +46,6 @@ import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.parsers.SAXParserFactory;
 import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.HBaseTestingUtility;
 import org.apache.hadoop.hbase.HColumnDescriptor;
 import org.apache.hadoop.hbase.HTableDescriptor;
@@ -64,22 +63,19 @@ import org.apache.hadoop.hbase.rest.model.RowModel;
 import org.apache.hadoop.hbase.testclassification.MediumTests;
 import org.apache.hadoop.hbase.testclassification.RestTests;
 import org.apache.hadoop.hbase.util.Bytes;
-import org.junit.AfterClass;
-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.BeforeAll;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
 import org.xml.sax.InputSource;
 import org.xml.sax.XMLReader;
 
 import 
org.apache.hbase.thirdparty.com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider;
 import org.apache.hbase.thirdparty.javax.ws.rs.core.MediaType;
 
-@Category({ RestTests.class, MediumTests.class })
+@Tag(RestTests.TAG)
+@Tag(MediumTests.TAG)
 public class TestTableScan {
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestTableScan.class);
 
   private static final TableName TABLE = TableName.valueOf("TestScanResource");
   private static final String CFA = "a";
@@ -97,7 +93,7 @@ public class TestTableScan {
   private static final Encoder base64UrlEncoder = 
java.util.Base64.getUrlEncoder().withoutPadding();
   private static final HBaseRESTTestingUtility REST_TEST_UTIL = new 
HBaseRESTTestingUtility();
 
-  @BeforeClass
+  @BeforeAll
   public static void setUpBeforeClass() throws Exception {
     conf = TEST_UTIL.getConfiguration();
     conf.set(Constants.CUSTOM_FILTERS, "CustomFilter:" + 
CustomFilter.class.getName());
@@ -116,7 +112,7 @@ public class TestTableScan {
     }
   }
 
-  @AfterClass
+  @AfterAll
   public static void tearDownAfterClass() throws Exception {
     TEST_UTIL.getAdmin().disableTable(TABLE);
     TEST_UTIL.getAdmin().deleteTable(TABLE);
@@ -271,8 +267,8 @@ public class TestTableScan {
     final ClientSideCellSetModel.Listener listener = new 
ClientSideCellSetModel.Listener() {
       @Override
       public void handleRowModel(ClientSideCellSetModel helper, RowModel row) {
-        assertTrue(row.getKey() != null);
-        assertTrue(row.getCells().size() > 0);
+        assertNotNull(row.getKey());
+        assertFalse(row.getCells().isEmpty());
       }
     };
 
@@ -377,8 +373,8 @@ public class TestTableScan {
 
   private void checkRowsNotNull(CellSetModel model) {
     for (RowModel row : model.getRows()) {
-      assertTrue(row.getKey() != null);
-      assertTrue(row.getCells().size() > 0);
+      assertNotNull(row.getKey());
+      assertFalse(row.getCells().isEmpty());
     }
   }
 
diff --git 
a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestVersionResource.java
 
b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestVersionResource.java
index abca65a5675..d5e4b8a0247 100644
--- 
a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestVersionResource.java
+++ 
b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestVersionResource.java
@@ -17,16 +17,16 @@
  */
 package org.apache.hadoop.hbase.rest;
 
-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.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import javax.xml.bind.JAXBContext;
 import javax.xml.bind.JAXBException;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.HBaseTestingUtility;
 import org.apache.hadoop.hbase.rest.client.Client;
 import org.apache.hadoop.hbase.rest.client.Cluster;
@@ -37,24 +37,20 @@ import 
org.apache.hadoop.hbase.testclassification.MediumTests;
 import org.apache.hadoop.hbase.testclassification.RestTests;
 import org.apache.hadoop.hbase.util.Bytes;
 import org.apache.hadoop.hbase.util.VersionInfo;
-import org.junit.AfterClass;
-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.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.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider;
 import org.apache.hbase.thirdparty.javax.ws.rs.core.MediaType;
 
-@Category({ RestTests.class, MediumTests.class })
+@Tag(RestTests.TAG)
+@Tag(MediumTests.TAG)
 public class TestVersionResource {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestVersionResource.class);
-
   private static final Logger LOG = 
LoggerFactory.getLogger(TestVersionResource.class);
 
   private static final HBaseTestingUtility TEST_UTIL = new 
HBaseTestingUtility();
@@ -62,7 +58,7 @@ public class TestVersionResource {
   private static Client client;
   private static JAXBContext context;
 
-  @BeforeClass
+  @BeforeAll
   public static void setUpBeforeClass() throws Exception {
     TEST_UTIL.startMiniCluster();
     REST_TEST_UTIL.startServletContainer(TEST_UTIL.getConfiguration());
@@ -70,7 +66,7 @@ public class TestVersionResource {
     context = JAXBContext.newInstance(VersionModel.class, 
StorageClusterVersionModel.class);
   }
 
-  @AfterClass
+  @AfterAll
   public static void tearDownAfterClass() throws Exception {
     REST_TEST_UTIL.shutdownServletContainer();
     TEST_UTIL.shutdownMiniCluster();
@@ -111,7 +107,7 @@ public class TestVersionResource {
     assertEquals(200, response.getCode());
     assertEquals(Constants.MIMETYPE_TEXT, response.getHeader("content-type"));
     String body = Bytes.toString(response.getBody());
-    assertTrue(body.length() > 0);
+    assertFalse(body.isEmpty());
     assertTrue(body.contains(RESTServlet.VERSION_STRING));
     assertTrue(body.contains(System.getProperty("java.vm.vendor")));
     assertTrue(body.contains(System.getProperty("java.version")));
diff --git 
a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/client/TestRemoteAdminRetries.java
 
b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/client/TestRemoteAdminRetries.java
index 81626d57e27..1f806190513 100644
--- 
a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/client/TestRemoteAdminRetries.java
+++ 
b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/client/TestRemoteAdminRetries.java
@@ -17,8 +17,8 @@
  */
 package org.apache.hadoop.hbase.rest.client;
 
-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 static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.anyString;
 import static org.mockito.Mockito.mock;
@@ -29,7 +29,6 @@ import static org.mockito.Mockito.when;
 import java.io.IOException;
 import java.util.regex.Pattern;
 import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.HBaseTestingUtility;
 import org.apache.hadoop.hbase.HTableDescriptor;
 import org.apache.hadoop.hbase.TableName;
@@ -37,21 +36,17 @@ import org.apache.hadoop.hbase.testclassification.RestTests;
 import org.apache.hadoop.hbase.testclassification.SmallTests;
 import org.apache.hadoop.hbase.util.Bytes;
 import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;
-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;
 
 /**
  * Tests {@link RemoteAdmin} retries.
  */
-@Category({ RestTests.class, SmallTests.class })
+@Tag(RestTests.TAG)
+@Tag(SmallTests.TAG)
 public class TestRemoteAdminRetries {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestRemoteAdminRetries.class);
-
   private static final int SLEEP_TIME = 50;
   private static final int RETRIES = 3;
   private static final long MAX_TIME = SLEEP_TIME * (RETRIES - 1);
@@ -61,7 +56,7 @@ public class TestRemoteAdminRetries {
   private RemoteAdmin remoteAdmin;
   private Client client;
 
-  @Before
+  @BeforeEach
   public void setup() throws Exception {
     client = mock(Client.class);
     Response response = new Response(509);
@@ -166,8 +161,7 @@ public class TestRemoteAdminRetries {
     assertTrue((EnvironmentEdgeManager.currentTime() - start) > MAX_TIME);
   }
 
-  private static interface CallExecutor {
+  private interface CallExecutor {
     void run() throws Exception;
   }
-
 }
diff --git 
a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/client/TestRemoteHTableRetries.java
 
b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/client/TestRemoteHTableRetries.java
index abdff1acdcd..f00387c59f0 100644
--- 
a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/client/TestRemoteHTableRetries.java
+++ 
b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/client/TestRemoteHTableRetries.java
@@ -17,8 +17,8 @@
  */
 package org.apache.hadoop.hbase.rest.client;
 
-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 static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.anyString;
 import static org.mockito.Mockito.mock;
@@ -30,7 +30,6 @@ import java.io.IOException;
 import java.util.Arrays;
 import java.util.regex.Pattern;
 import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.HBaseTestingUtility;
 import org.apache.hadoop.hbase.client.Delete;
 import org.apache.hadoop.hbase.client.Get;
@@ -40,20 +39,17 @@ import org.apache.hadoop.hbase.testclassification.RestTests;
 import org.apache.hadoop.hbase.testclassification.SmallTests;
 import org.apache.hadoop.hbase.util.Bytes;
 import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.ClassRule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
 
 /**
  * Test RemoteHTable retries.
  */
-@Category({ RestTests.class, SmallTests.class })
+@Tag(RestTests.TAG)
+@Tag(SmallTests.TAG)
 public class TestRemoteHTableRetries {
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestRemoteHTableRetries.class);
 
   private static final int SLEEP_TIME = 50;
   private static final int RETRIES = 3;
@@ -69,7 +65,7 @@ public class TestRemoteHTableRetries {
   private Client client;
   private RemoteHTable remoteTable;
 
-  @Before
+  @BeforeEach
   public void setup() throws Exception {
     client = mock(Client.class);
     Response response = new Response(509);
@@ -85,7 +81,7 @@ public class TestRemoteHTableRetries {
     remoteTable = new RemoteHTable(client, TEST_UTIL.getConfiguration(), 
"MyTable");
   }
 
-  @After
+  @AfterEach
   public void tearDownAfterClass() throws Exception {
     remoteTable.close();
   }
diff --git 
a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/client/TestRemoteTable.java
 
b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/client/TestRemoteTable.java
index 57bc1961496..7686cfea195 100644
--- 
a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/client/TestRemoteTable.java
+++ 
b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/client/TestRemoteTable.java
@@ -17,11 +17,11 @@
  */
 package org.apache.hadoop.hbase.rest.client;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-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.assertFalse;
+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;
@@ -30,7 +30,6 @@ import java.util.Iterator;
 import java.util.List;
 import org.apache.hadoop.hbase.Cell;
 import org.apache.hadoop.hbase.CellUtil;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.HBaseTestingUtility;
 import org.apache.hadoop.hbase.HColumnDescriptor;
 import org.apache.hadoop.hbase.HTableDescriptor;
@@ -51,19 +50,16 @@ import org.apache.hadoop.hbase.util.Bytes;
 import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;
 import org.apache.http.Header;
 import org.apache.http.message.BasicHeader;
-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;
-
-@Category({ RestTests.class, LargeTests.class })
+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;
+
+@Tag(RestTests.TAG)
+@Tag(LargeTests.TAG)
 public class TestRemoteTable {
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestRemoteTable.class);
 
   // Verify that invalid URL characters and arbitrary bytes are escaped when
   // constructing REST URLs per HBASE-7621. RemoteHTable should support row 
keys
@@ -104,13 +100,13 @@ public class TestRemoteTable {
   private static final HBaseRESTTestingUtility REST_TEST_UTIL = new 
HBaseRESTTestingUtility();
   private RemoteHTable remoteTable;
 
-  @BeforeClass
+  @BeforeAll
   public static void setUpBeforeClass() throws Exception {
     TEST_UTIL.startMiniCluster();
     REST_TEST_UTIL.startServletContainer(TEST_UTIL.getConfiguration());
   }
 
-  @Before
+  @BeforeEach
   public void before() throws Exception {
     Admin admin = TEST_UTIL.getAdmin();
     if (admin.tableExists(TABLE)) {
@@ -140,12 +136,12 @@ public class TestRemoteTable {
         TEST_UTIL.getConfiguration(), TABLE.toBytes());
   }
 
-  @After
+  @AfterEach
   public void after() throws Exception {
     remoteTable.close();
   }
 
-  @AfterClass
+  @AfterAll
   public static void tearDownAfterClass() throws Exception {
     REST_TEST_UTIL.shutdownServletContainer();
     TEST_UTIL.shutdownMiniCluster();
@@ -707,5 +703,4 @@ public class TestRemoteTable {
     }
     assertEquals(5, counter);
   }
-
 }
diff --git 
a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/client/TestXmlParsing.java
 
b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/client/TestXmlParsing.java
index 2618ff54180..7c8f896b524 100644
--- 
a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/client/TestXmlParsing.java
+++ 
b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/client/TestXmlParsing.java
@@ -17,37 +17,31 @@
  */
 package org.apache.hadoop.hbase.rest.client;
 
-import static org.junit.Assert.assertEquals;
-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.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
 import java.io.IOException;
 import javax.xml.bind.UnmarshalException;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.HBaseConfiguration;
 import org.apache.hadoop.hbase.rest.Constants;
 import org.apache.hadoop.hbase.rest.model.StorageClusterVersionModel;
 import org.apache.hadoop.hbase.testclassification.SmallTests;
 import org.apache.hadoop.hbase.util.Bytes;
 import org.apache.hadoop.util.StringUtils;
-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;
 
 /**
  * Test class for {@link RemoteAdmin} to verify XML is parsed in a certain 
manner.
  */
-@Category(SmallTests.class)
+@Tag(SmallTests.TAG)
 public class TestXmlParsing {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestXmlParsing.class);
-
   private static final Logger LOG = 
LoggerFactory.getLogger(TestXmlParsing.class);
 
   @Test
@@ -79,13 +73,14 @@ public class TestXmlParsing {
       admin.getClusterVersion();
       fail("Expected getClusterVersion() to throw an exception");
     } catch (IOException e) {
-      assertEquals("Cause of exception ought to be a failure to parse the 
stream due to our "
-        + "invalid external entity. Make sure this isn't just a false positive 
due to "
-        + "implementation. see HBASE-19020.", UnmarshalException.class, 
e.getCause().getClass());
+      assertEquals(UnmarshalException.class, e.getCause().getClass(),
+        "Cause of exception ought to be a failure to parse the stream due to 
our "
+          + "invalid external entity. Make sure this isn't just a false 
positive due to "
+          + "implementation. see HBASE-19020.");
       final String exceptionText = StringUtils.stringifyException(e);
       final String expectedText = "\"xee\"";
-      LOG.debug("exception text: '" + exceptionText + "'", e);
-      assertTrue("Exception does not contain expected text", 
exceptionText.contains(expectedText));
+      LOG.debug("exception text: '{}'", exceptionText, e);
+      assertTrue(exceptionText.contains(expectedText), "Exception does not 
contain expected text");
     }
   }
 }
diff --git 
a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/model/TestCellModel.java
 
b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/model/TestCellModel.java
index 82909170857..766301b30e8 100644
--- 
a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/model/TestCellModel.java
+++ 
b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/model/TestCellModel.java
@@ -17,28 +17,23 @@
  */
 package org.apache.hadoop.hbase.rest.model;
 
-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.assertNotEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.testclassification.RestTests;
 import org.apache.hadoop.hbase.testclassification.SmallTests;
 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;
 
-@Category({ RestTests.class, SmallTests.class })
+@Tag(RestTests.TAG)
+@Tag(SmallTests.TAG)
 public class TestCellModel extends TestModelBase<CellModel> {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestCellModel.class);
-
   private static final long TIMESTAMP = 1245219839331L;
   private static final byte[] COLUMN = Bytes.toBytes("testcolumn");
   private static final byte[] VALUE = Bytes.toBytes("testvalue");
@@ -71,16 +66,19 @@ public class TestCellModel extends TestModelBase<CellModel> 
{
   }
 
   @Override
+  @Test
   public void testBuildModel() throws Exception {
     checkModel(buildTestModel());
   }
 
   @Override
+  @Test
   public void testFromXML() throws Exception {
     checkModel(fromXML(AS_XML));
   }
 
   @Override
+  @Test
   public void testFromPB() throws Exception {
     checkModel(fromPB(AS_PB));
   }
@@ -93,16 +91,13 @@ public class TestCellModel extends TestModelBase<CellModel> 
{
     assertEquals(cellModel1, cellModel2);
 
     CellModel cellModel3 = new CellModel();
-    assertFalse(cellModel1.equals(cellModel3));
+    assertNotEquals(cellModel1, cellModel3);
   }
 
   @Test
   public void testToString() throws Exception {
     String expectedColumn = ToStringBuilder.reflectionToString(COLUMN, 
ToStringStyle.SIMPLE_STYLE);
-
     CellModel cellModel = buildTestModel();
-    System.out.println(cellModel);
-
     assertTrue(StringUtils.contains(cellModel.toString(), expectedColumn));
   }
 }
diff --git 
a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/model/TestCellSetModel.java
 
b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/model/TestCellSetModel.java
index 38f0f43c0ce..ffbb331ae1d 100644
--- 
a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/model/TestCellSetModel.java
+++ 
b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/model/TestCellSetModel.java
@@ -17,25 +17,21 @@
  */
 package org.apache.hadoop.hbase.rest.model;
 
-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.util.Iterator;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.testclassification.RestTests;
 import org.apache.hadoop.hbase.testclassification.SmallTests;
 import org.apache.hadoop.hbase.util.Bytes;
-import org.junit.ClassRule;
-import org.junit.experimental.categories.Category;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
 
-@Category({ RestTests.class, SmallTests.class })
+@Tag(RestTests.TAG)
+@Tag(SmallTests.TAG)
 public class TestCellSetModel extends TestModelBase<CellSetModel> {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestCellSetModel.class);
-
   private static final byte[] ROW1 = Bytes.toBytes("testrow1");
   private static final byte[] COLUMN1 = Bytes.toBytes("testcolumn1");
   private static final byte[] VALUE1 = Bytes.toBytes("testvalue1");
@@ -121,18 +117,20 @@ public class TestCellSetModel extends 
TestModelBase<CellSetModel> {
   }
 
   @Override
+  @Test
   public void testBuildModel() throws Exception {
     checkModel(buildTestModel());
   }
 
   @Override
+  @Test
   public void testFromXML() throws Exception {
     checkModel(fromXML(AS_XML));
   }
 
   @Override
+  @Test
   public void testFromPB() throws Exception {
     checkModel(fromPB(AS_PB));
   }
-
 }
diff --git 
a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/model/TestColumnSchemaModel.java
 
b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/model/TestColumnSchemaModel.java
index 0001abe02d0..45685b327cc 100644
--- 
a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/model/TestColumnSchemaModel.java
+++ 
b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/model/TestColumnSchemaModel.java
@@ -17,23 +17,18 @@
  */
 package org.apache.hadoop.hbase.rest.model;
 
-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 org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.testclassification.RestTests;
 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({ RestTests.class, SmallTests.class })
+@Tag(RestTests.TAG)
+@Tag(SmallTests.TAG)
 public class TestColumnSchemaModel extends TestModelBase<ColumnSchemaModel> {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestColumnSchemaModel.class);
-
   protected static final String COLUMN_NAME = "testcolumn";
   protected static final boolean BLOCKCACHE = true;
   protected static final int BLOCKSIZE = 16384;
@@ -70,14 +65,14 @@ public class TestColumnSchemaModel extends 
TestModelBase<ColumnSchemaModel> {
 
   @Override
   protected void checkModel(ColumnSchemaModel model) {
-    assertEquals("name", COLUMN_NAME, model.getName());
-    assertEquals("block cache", BLOCKCACHE, model.__getBlockcache());
-    assertEquals("block size", BLOCKSIZE, model.__getBlocksize());
-    assertEquals("bloomfilter", BLOOMFILTER, model.__getBloomfilter());
-    assertTrue("compression", 
model.__getCompression().equalsIgnoreCase(COMPRESSION));
-    assertEquals("in memory", IN_MEMORY, model.__getInMemory());
-    assertEquals("ttl", TTL, model.__getTTL());
-    assertEquals("versions", VERSIONS, model.__getVersions());
+    assertEquals(COLUMN_NAME, model.getName(), "name");
+    assertEquals(BLOCKCACHE, model.__getBlockcache(), "block cache");
+    assertEquals(BLOCKSIZE, model.__getBlocksize(), "block size");
+    assertEquals(BLOOMFILTER, model.__getBloomfilter(), "bloomfilter");
+    assertTrue(model.__getCompression().equalsIgnoreCase(COMPRESSION), 
"compression");
+    assertEquals(IN_MEMORY, model.__getInMemory(), "in memory");
+    assertEquals(TTL, model.__getTTL(), "ttl");
+    assertEquals(VERSIONS, model.__getVersions(), "versions");
   }
 
   @Override
diff --git 
a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/model/TestModelBase.java
 
b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/model/TestModelBase.java
index 4cfe70e0639..5bc499aa76a 100644
--- 
a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/model/TestModelBase.java
+++ 
b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/model/TestModelBase.java
@@ -17,7 +17,7 @@
  */
 package org.apache.hadoop.hbase.rest.model;
 
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.node.ObjectNode;
@@ -29,7 +29,7 @@ import javax.xml.bind.JAXBContext;
 import javax.xml.bind.JAXBException;
 import org.apache.hadoop.hbase.rest.ProtobufMessageHandler;
 import org.apache.hadoop.hbase.rest.provider.JAXBContextResolver;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import 
org.apache.hbase.thirdparty.com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider;
 import org.apache.hbase.thirdparty.javax.ws.rs.core.MediaType;
diff --git 
a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/model/TestNamespacesInstanceModel.java
 
b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/model/TestNamespacesInstanceModel.java
index 831a5642fb6..a9a01d120ae 100644
--- 
a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/model/TestNamespacesInstanceModel.java
+++ 
b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/model/TestNamespacesInstanceModel.java
@@ -17,25 +17,20 @@
  */
 package org.apache.hadoop.hbase.rest.model;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotSame;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotSame;
 
 import java.util.HashMap;
 import java.util.Map;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.testclassification.RestTests;
 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({ RestTests.class, SmallTests.class })
+@Tag(RestTests.TAG)
+@Tag(SmallTests.TAG)
 public class TestNamespacesInstanceModel extends 
TestModelBase<NamespacesInstanceModel> {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestNamespacesInstanceModel.class);
-
   public static final Map<String, String> NAMESPACE_PROPERTIES = new 
HashMap<>();
   public static final String NAMESPACE_NAME = "namespaceName";
 
diff --git 
a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/model/TestNamespacesModel.java
 
b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/model/TestNamespacesModel.java
index 30e0c44bcd8..c933605c638 100644
--- 
a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/model/TestNamespacesModel.java
+++ 
b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/model/TestNamespacesModel.java
@@ -17,25 +17,20 @@
  */
 package org.apache.hadoop.hbase.rest.model;
 
-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.Arrays;
 import java.util.List;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.testclassification.RestTests;
 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({ RestTests.class, SmallTests.class })
+@Tag(RestTests.TAG)
+@Tag(SmallTests.TAG)
 public class TestNamespacesModel extends TestModelBase<NamespacesModel> {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestNamespacesModel.class);
-
   public static final String NAMESPACE_NAME_1 = "testNamespace1";
   public static final String NAMESPACE_NAME_2 = "testNamespace2";
 
diff --git 
a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/model/TestRowModel.java 
b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/model/TestRowModel.java
index ad539e12848..bc1ac6b2328 100644
--- 
a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/model/TestRowModel.java
+++ 
b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/model/TestRowModel.java
@@ -17,29 +17,25 @@
  */
 package org.apache.hadoop.hbase.rest.model;
 
-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.assertNotEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.util.Iterator;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.testclassification.RestTests;
 import org.apache.hadoop.hbase.testclassification.SmallTests;
 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;
 
-@Category({ RestTests.class, SmallTests.class })
+@Tag(RestTests.TAG)
+@Tag(SmallTests.TAG)
 public class TestRowModel extends TestModelBase<RowModel> {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestRowModel.class);
-
   private static final byte[] ROW1 = Bytes.toBytes("testrow1");
   private static final byte[] COLUMN1 = Bytes.toBytes("testcolumn1");
   private static final byte[] VALUE1 = Bytes.toBytes("testvalue1");
@@ -89,7 +85,7 @@ public class TestRowModel extends TestModelBase<RowModel> {
     assertEquals(rowModel1, rowModel2);
 
     RowModel rowModel3 = new RowModel();
-    assertFalse(rowModel1.equals(rowModel3));
+    assertNotEquals(rowModel1, rowModel3);
   }
 
   @Test
@@ -97,8 +93,6 @@ public class TestRowModel extends TestModelBase<RowModel> {
     String expectedRowKey = ToStringBuilder.reflectionToString(ROW1, 
ToStringStyle.SIMPLE_STYLE);
 
     RowModel rowModel = buildTestModel();
-    System.out.println(rowModel);
-
     assertTrue(StringUtils.contains(rowModel.toString(), expectedRowKey));
   }
 }
diff --git 
a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/model/TestScannerModel.java
 
b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/model/TestScannerModel.java
index b7b4da240eb..c60308bba80 100644
--- 
a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/model/TestScannerModel.java
+++ 
b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/model/TestScannerModel.java
@@ -17,26 +17,23 @@
  */
 package org.apache.hadoop.hbase.rest.model;
 
-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.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import com.fasterxml.jackson.core.JsonParseException;
 import com.fasterxml.jackson.databind.JsonMappingException;
 import com.fasterxml.jackson.databind.node.ObjectNode;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.rest.ScannerResultGenerator;
 import org.apache.hadoop.hbase.testclassification.RestTests;
 import org.apache.hadoop.hbase.testclassification.SmallTests;
 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;
 
-@Category({ RestTests.class, SmallTests.class })
+@Tag(RestTests.TAG)
+@Tag(SmallTests.TAG)
 public class TestScannerModel extends TestModelBase<ScannerModel> {
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestScannerModel.class);
 
   private static final String PRIVATE = "private";
   private static final String PUBLIC = "public";
@@ -106,7 +103,7 @@ public class TestScannerModel extends 
TestModelBase<ScannerModel> {
     assertEquals(CACHE_BLOCKS, model.getCacheBlocks());
     boolean foundLabel1 = false;
     boolean foundLabel2 = false;
-    if (model.getLabels() != null && model.getLabels().size() > 0) {
+    if (model.getLabels() != null && !model.getLabels().isEmpty()) {
       for (String label : model.getLabels()) {
         if (label.equals(PRIVATE)) {
           foundLabel1 = true;
@@ -125,22 +122,22 @@ public class TestScannerModel extends 
TestModelBase<ScannerModel> {
     verifyException(CORRECT_FILTER);
   }
 
-  @Test(expected = IllegalArgumentException.class)
+  @Test
   public void testNonExistingFilter() throws Exception {
     final String UNKNOWN_FILTER = "{\"type\": \"UnknownFilter\", \"value\": 
\"cg==\"}";
-    verifyException(UNKNOWN_FILTER);
+    assertThrows(IllegalArgumentException.class, () -> 
verifyException(UNKNOWN_FILTER));
   }
 
-  @Test(expected = JsonMappingException.class)
+  @Test
   public void testIncorrectFilterThrowsJME() throws Exception {
     final String JME_FILTER = "{\"invalid_tag\": \"PrefixFilter\", \"value\": 
\"cg==\"}";
-    verifyException(JME_FILTER);
+    assertThrows(JsonMappingException.class, () -> 
verifyException(JME_FILTER));
   }
 
-  @Test(expected = JsonParseException.class)
-  public void tesIncorrecttFilterThrowsJPE() throws Exception {
+  @Test
+  public void tesIncorrectFilterThrowsJPE() throws Exception {
     final String JPE_FILTER = "{\"type\": \"PrefixFilter\",, \"value\": 
\"cg==\"}";
-    verifyException(JPE_FILTER);
+    assertThrows(JsonParseException.class, () -> verifyException(JPE_FILTER));
   }
 
   private void verifyException(final String FILTER) throws Exception {
diff --git 
a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/model/TestStorageClusterStatusModel.java
 
b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/model/TestStorageClusterStatusModel.java
index 22cc2230cc5..4a31beed3ef 100644
--- 
a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/model/TestStorageClusterStatusModel.java
+++ 
b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/model/TestStorageClusterStatusModel.java
@@ -17,24 +17,19 @@
  */
 package org.apache.hadoop.hbase.rest.model;
 
-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 java.util.Iterator;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.testclassification.RestTests;
 import org.apache.hadoop.hbase.testclassification.SmallTests;
 import org.apache.hadoop.hbase.util.Bytes;
-import org.junit.ClassRule;
-import org.junit.experimental.categories.Category;
+import org.junit.jupiter.api.Tag;
 
-@Category({ RestTests.class, SmallTests.class })
+@Tag(RestTests.TAG)
+@Tag(SmallTests.TAG)
 public class TestStorageClusterStatusModel extends 
TestModelBase<StorageClusterStatusModel> {
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestStorageClusterStatusModel.class);
 
   public TestStorageClusterStatusModel() throws Exception {
     super(StorageClusterStatusModel.class);
@@ -106,7 +101,7 @@ public class TestStorageClusterStatusModel extends 
TestModelBase<StorageClusterS
     assertEquals(1024, node.getMaxHeapSizeMB());
     Iterator<StorageClusterStatusModel.Node.Region> regions = 
node.getRegions().iterator();
     StorageClusterStatusModel.Node.Region region = regions.next();
-    assertTrue(Bytes.toString(region.getName()).equals("hbase:root,,0"));
+    assertEquals("hbase:root,,0", Bytes.toString(region.getName()));
     assertEquals(1, region.getStores());
     assertEquals(1, region.getStorefiles());
     assertEquals(0, region.getStorefileSizeMB());
@@ -127,7 +122,7 @@ public class TestStorageClusterStatusModel extends 
TestModelBase<StorageClusterS
     assertEquals(1024, node.getMaxHeapSizeMB());
     regions = node.getRegions().iterator();
     region = regions.next();
-    assertEquals(Bytes.toString(region.getName()), TableName.META_TABLE_NAME + 
",,1246000043724");
+    assertEquals(TableName.META_TABLE_NAME + ",,1246000043724", 
Bytes.toString(region.getName()));
     assertEquals(1, region.getStores());
     assertEquals(1, region.getStorefiles());
     assertEquals(0, region.getStorefileSizeMB());
diff --git 
a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/model/TestStorageClusterVersionModel.java
 
b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/model/TestStorageClusterVersionModel.java
index 6004cedcebc..0004b005ffb 100644
--- 
a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/model/TestStorageClusterVersionModel.java
+++ 
b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/model/TestStorageClusterVersionModel.java
@@ -17,21 +17,17 @@
  */
 package org.apache.hadoop.hbase.rest.model;
 
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.testclassification.RestTests;
 import org.apache.hadoop.hbase.testclassification.SmallTests;
-import org.junit.ClassRule;
-import org.junit.experimental.categories.Category;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
 
-@Category({ RestTests.class, SmallTests.class })
+@Tag(RestTests.TAG)
+@Tag(SmallTests.TAG)
 public class TestStorageClusterVersionModel extends 
TestModelBase<StorageClusterVersionModel> {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestStorageClusterVersionModel.class);
-
   private static final String VERSION = "0.0.1-testing";
 
   public TestStorageClusterVersionModel() throws Exception {
@@ -55,6 +51,7 @@ public class TestStorageClusterVersionModel extends 
TestModelBase<StorageCluster
   }
 
   @Override
+  @Test
   public void testFromPB() throws Exception {
     // ignore test no pb
   }
diff --git 
a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/model/TestTableInfoModel.java
 
b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/model/TestTableInfoModel.java
index a47cee53b18..d7897c99c37 100644
--- 
a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/model/TestTableInfoModel.java
+++ 
b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/model/TestTableInfoModel.java
@@ -17,25 +17,21 @@
  */
 package org.apache.hadoop.hbase.rest.model;
 
-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.util.Iterator;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.testclassification.RestTests;
 import org.apache.hadoop.hbase.testclassification.SmallTests;
 import org.apache.hadoop.hbase.util.Bytes;
-import org.junit.ClassRule;
-import org.junit.experimental.categories.Category;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
 
-@Category({ RestTests.class, SmallTests.class })
+@Tag(RestTests.TAG)
+@Tag(SmallTests.TAG)
 public class TestTableInfoModel extends TestModelBase<TableInfoModel> {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestTableInfoModel.class);
-
   private static final String TABLE = "testtable";
   private static final byte[] START_KEY = Bytes.toBytes("abracadbra");
   private static final byte[] END_KEY = Bytes.toBytes("zzyzx");
@@ -80,18 +76,20 @@ public class TestTableInfoModel extends 
TestModelBase<TableInfoModel> {
   }
 
   @Override
+  @Test
   public void testBuildModel() throws Exception {
     checkModel(buildTestModel());
   }
 
   @Override
+  @Test
   public void testFromXML() throws Exception {
     checkModel(fromXML(AS_XML));
   }
 
   @Override
+  @Test
   public void testFromPB() throws Exception {
     checkModel(fromPB(AS_PB));
   }
-
 }
diff --git 
a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/model/TestTableListModel.java
 
b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/model/TestTableListModel.java
index c034f0602dd..9ee0569e4e0 100644
--- 
a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/model/TestTableListModel.java
+++ 
b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/model/TestTableListModel.java
@@ -17,23 +17,18 @@
  */
 package org.apache.hadoop.hbase.rest.model;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
 
 import java.util.Iterator;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.testclassification.RestTests;
 import org.apache.hadoop.hbase.testclassification.SmallTests;
-import org.junit.ClassRule;
-import org.junit.experimental.categories.Category;
+import org.junit.jupiter.api.Tag;
 
-@Category({ RestTests.class, SmallTests.class })
+@Tag(RestTests.TAG)
+@Tag(SmallTests.TAG)
 public class TestTableListModel extends TestModelBase<TableListModel> {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestTableListModel.class);
-
   private static final String TABLE1 = "table1";
   private static final String TABLE2 = "table2";
   private static final String TABLE3 = "table3";
diff --git 
a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/model/TestTableRegionModel.java
 
b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/model/TestTableRegionModel.java
index 3a85b9ce0be..a4f7f40a0e0 100644
--- 
a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/model/TestTableRegionModel.java
+++ 
b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/model/TestTableRegionModel.java
@@ -17,26 +17,21 @@
  */
 package org.apache.hadoop.hbase.rest.model;
 
-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 org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.HRegionInfo;
 import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.testclassification.RestTests;
 import org.apache.hadoop.hbase.testclassification.SmallTests;
 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;
 
-@Category({ RestTests.class, SmallTests.class })
+@Tag(RestTests.TAG)
+@Tag(SmallTests.TAG)
 public class TestTableRegionModel extends TestModelBase<TableRegionModel> {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestTableRegionModel.class);
-
   private static final String TABLE = "testtable";
   private static final byte[] START_KEY = Bytes.toBytes("abracadbra");
   private static final byte[] END_KEY = Bytes.toBytes("zzyzx");
@@ -59,8 +54,7 @@ public class TestTableRegionModel extends 
TestModelBase<TableRegionModel> {
 
   @Override
   protected TableRegionModel buildTestModel() {
-    TableRegionModel model = new TableRegionModel(TABLE, ID, START_KEY, 
END_KEY, LOCATION);
-    return model;
+    return new TableRegionModel(TABLE, ID, START_KEY, END_KEY, LOCATION);
   }
 
   @Override
diff --git 
a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/model/TestTableSchemaModel.java
 
b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/model/TestTableSchemaModel.java
index c12288e0209..bb9568dd183 100644
--- 
a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/model/TestTableSchemaModel.java
+++ 
b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/model/TestTableSchemaModel.java
@@ -17,29 +17,20 @@
  */
 package org.apache.hadoop.hbase.rest.model;
 
-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.util.Iterator;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.testclassification.RestTests;
 import org.apache.hadoop.hbase.testclassification.SmallTests;
-import org.junit.ClassRule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
 
-@Category({ RestTests.class, SmallTests.class })
+@Tag(RestTests.TAG)
+@Tag(SmallTests.TAG)
 public class TestTableSchemaModel extends TestModelBase<TableSchemaModel> {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestTableSchemaModel.class);
-
-  private static final Logger LOG = 
LoggerFactory.getLogger(TestTableSchemaModel.class);
-
   public static final String TABLE_NAME = "testTable";
   private static final boolean IS_META = false;
   private static final boolean IS_ROOT = false;
@@ -117,5 +108,4 @@ public class TestTableSchemaModel extends 
TestModelBase<TableSchemaModel> {
   public void testFromPB() throws Exception {
     checkModel(fromPB(AS_PB));
   }
-
 }
diff --git 
a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/model/TestVersionModel.java
 
b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/model/TestVersionModel.java
index 8062e97e8e0..65a0daa4ad2 100644
--- 
a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/model/TestVersionModel.java
+++ 
b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/model/TestVersionModel.java
@@ -17,21 +17,16 @@
  */
 package org.apache.hadoop.hbase.rest.model;
 
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.testclassification.RestTests;
 import org.apache.hadoop.hbase.testclassification.SmallTests;
-import org.junit.ClassRule;
-import org.junit.experimental.categories.Category;
+import org.junit.jupiter.api.Tag;
 
-@Category({ RestTests.class, SmallTests.class })
+@Tag(RestTests.TAG)
+@Tag(SmallTests.TAG)
 public class TestVersionModel extends TestModelBase<VersionModel> {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestVersionModel.class);
-
   private static final String REST_VERSION = "0.0.1";
   private static final String OS_VERSION = "Linux 
2.6.18-128.1.6.el5.centos.plusxen amd64";
   private static final String JVM_VERSION = "Sun Microsystems Inc. 
1.6.0_13-11.3-b02";

Reply via email to