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

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


The following commit(s) were added to refs/heads/master by this push:
     new 4411cde5a83 HBASE-29858 Upgrade hbase-rest to use junit5 (#7686)
4411cde5a83 is described below

commit 4411cde5a83d265f65b8edcfdacab79cd391ddec
Author: Liu Xiao <[email protected]>
AuthorDate: Tue Feb 3 21:39:03 2026 +0800

    HBASE-29858 Upgrade hbase-rest to use junit5 (#7686)
    
    Signed-off-by: Duo Zhang <[email protected]>
---
 hbase-rest/pom.xml                                 |  5 --
 .../org/apache/hadoop/hbase/rest/DummyFilter.java  |  2 +-
 .../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     | 34 ++++-------
 .../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      | 35 ++++-------
 .../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     | 24 ++++----
 .../hadoop/hbase/rest/model/TestCellSetModel.java  | 28 ++++-----
 .../hbase/rest/model/TestColumnSchemaModel.java    | 22 +++----
 .../hadoop/hbase/rest/model/TestModelBase.java     |  4 +-
 .../rest/model/TestNamespacesInstanceModel.java    | 17 ++----
 .../hbase/rest/model/TestNamespacesModel.java      | 17 ++----
 .../hadoop/hbase/rest/model/TestRowModel.java      | 25 +++-----
 .../hadoop/hbase/rest/model/TestScannerModel.java  | 35 +++++------
 .../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     | 21 +++----
 .../hbase/rest/model/TestTableSchemaModel.java     | 24 +++-----
 .../hadoop/hbase/rest/model/TestVersionModel.java  | 13 ++--
 41 files changed, 463 insertions(+), 653 deletions(-)

diff --git a/hbase-rest/pom.xml b/hbase-rest/pom.xml
index 4797de9ef89..4463173c817 100644
--- a/hbase-rest/pom.xml
+++ b/hbase-rest/pom.xml
@@ -213,11 +213,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..38c96a36f5d 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 {
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 004458d99e6..a1f6538f91c 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;
@@ -46,10 +46,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;
@@ -84,7 +84,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);
@@ -97,13 +97,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)) {
@@ -119,7 +119,7 @@ public class RowResourceBase {
     admin.createTable(tableDescriptorBuilder.build());
   }
 
-  @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 21e948e3cfc..83906d50b8f 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, MediumTests.class })
+@Tag(RestTests.TAG)
+@Tag(MediumTests.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());
@@ -628,8 +624,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));
@@ -686,7 +682,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());
@@ -730,9 +726,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 b04ea00829d..8f2eec4a6c3 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.HBaseTestingUtil;
 import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.client.Admin;
@@ -43,19 +42,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";
@@ -67,7 +62,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());
@@ -83,7 +78,7 @@ public class TestGzipFilter {
     admin.createTable(tableDescriptorBuilder.build());
   }
 
-  @AfterClass
+  @AfterAll
   public static void tearDownAfterClass() throws Exception {
     REST_TEST_UTIL.shutdownServletContainer();
     TEST_UTIL.shutdownMiniCluster();
@@ -146,5 +141,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 ee1daa3ab3f..ef9d7d8084c 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.HBaseCommonTestingUtil;
+import org.apache.hadoop.hbase.HBaseParameterizedTestTemplate;
 import org.apache.hadoop.hbase.HBaseTestingUtil;
 import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.client.Admin;
@@ -46,23 +45,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";
@@ -85,20 +80,19 @@ public class TestMultiRowResource {
   private static Header extraHdr = null;
   private static boolean csrfEnabled = true;
 
-  @Parameterized.Parameters
-  public static Collection<Object[]> data() {
-    return HBaseCommonTestingUtil.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);
-    if (csrfEnabled) {
+    conf.setBoolean(RESTServer.REST_CSRF_ENABLED_KEY, 
TestMultiRowResource.csrfEnabled);
+    if (TestMultiRowResource.csrfEnabled) {
       conf.set(RESTServer.REST_CSRF_BROWSER_USERAGENTS_REGEX_KEY, ".*");
     }
     extraHdr = new BasicHeader(RESTServer.REST_CSRF_CUSTOM_HEADER_DEFAULT, "");
@@ -118,13 +112,13 @@ public class TestMultiRowResource {
     admin.createTable(tableDescriptorBuilder.build());
   }
 
-  @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;
@@ -177,7 +171,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;
@@ -195,9 +189,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);
@@ -208,9 +202,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
@@ -223,7 +217,7 @@ public class TestMultiRowResource {
     client.delete(row_6_url, extraHdr);
   }
 
-  @Test
+  @TestTemplate
   public void testMultiCellGetNoKeys() throws IOException {
     StringBuilder path = new StringBuilder();
     path.append("/");
@@ -234,7 +228,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;
@@ -258,7 +252,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;
@@ -291,7 +285,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;
 
@@ -315,7 +309,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;
@@ -348,7 +342,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;
@@ -413,5 +407,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 ca013390a7b..c12ea02c5d9 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.HBaseTestingUtil;
 import org.apache.hadoop.hbase.NamespaceDescriptor;
 import org.apache.hadoop.hbase.TableName;
@@ -53,30 +52,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 HBaseTestingUtil TEST_UTIL = new HBaseTestingUtil();
   private static final HBaseRESTTestingUtility REST_TEST_UTIL = new 
HBaseRESTTestingUtility();
@@ -86,7 +82,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();
@@ -104,7 +100,7 @@ public class TestNamespacesInstanceResource {
     NAMESPACE4_PROPS.put("key4b", "value4b");
   }
 
-  @AfterClass
+  @AfterAll
   public static void tearDownAfterClass() throws Exception {
     REST_TEST_UTIL.shutdownServletContainer();
     TEST_UTIL.shutdownMiniCluster();
@@ -117,8 +113,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 {
@@ -137,7 +134,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));
     }
@@ -207,7 +204,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);
@@ -227,7 +224,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);
@@ -247,7 +244,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 9508c95a1eb..6e961cfc029 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.HBaseTestingUtil;
 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 f4bce03abca..a123f714a01 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.HBaseTestingUtil;
 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 efd276d0688..1e2f21ca6f4 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.HBaseTestingUtil;
 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 HBaseTestingUtil TEST_UTIL = new HBaseTestingUtil();
   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 ebe49d53da1..3db3e48f959 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.HBaseTestingUtil;
 import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.client.Admin;
@@ -59,22 +58,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";
@@ -169,7 +161,7 @@ public class TestScannerResource {
     return count;
   }
 
-  @BeforeClass
+  @BeforeAll
   public static void setUpBeforeClass() throws Exception {
     conf = TEST_UTIL.getConfiguration();
     TEST_UTIL.startMiniCluster();
@@ -203,7 +195,7 @@ public class TestScannerResource {
     admin.createTable(tableDescriptorBuilder.build());
   }
 
-  @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/TestScannersWithFilters.java
 
b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestScannersWithFilters.java
index 4b32e8a4c22..ea7e74b679d 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.HBaseTestingUtil;
 import org.apache.hadoop.hbase.HConstants;
 import org.apache.hadoop.hbase.KeyValue;
@@ -73,19 +72,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);
 
@@ -120,7 +116,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());
@@ -205,7 +201,7 @@ public class TestScannersWithFilters {
     }
   }
 
-  @AfterClass
+  @AfterAll
   public static void tearDownAfterClass() throws Exception {
     REST_TEST_UTIL.shutdownServletContainer();
     TEST_UTIL.shutdownMiniCluster();
@@ -231,13 +227,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
@@ -283,18 +278,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)
@@ -335,12 +330,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 e792935fe60..91fe394181f 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.HBaseTestingUtil;
 import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.client.Admin;
@@ -63,19 +62,16 @@ 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;
 
 import 
org.apache.hadoop.hbase.shaded.protobuf.generated.VisibilityLabelsProtos.VisibilityLabelsResponse;
 
-@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";
@@ -131,7 +127,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();
@@ -165,7 +161,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 45787e41986..a7394e96127 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.HBaseCommonTestingUtil;
+import org.apache.hadoop.hbase.HBaseParameterizedTestTemplate;
 import org.apache.hadoop.hbase.HBaseTestingUtil;
 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 HBaseCommonTestingUtil.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 4ad065cbdc4..feb1c1e2d6d 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.HBaseTestingUtil;
 import org.apache.hadoop.hbase.SingleProcessHBaseCluster;
 import org.apache.hadoop.hbase.StartTestingClusterOption;
@@ -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 HBaseTestingUtil TEST_UTIL = new HBaseTestingUtil();
   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 3da31de8431..ec5b333163e 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.HBaseTestingUtil;
 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 HBaseTestingUtil TEST_UTIL = new HBaseTestingUtil();
   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 a115fd17af3..66cff4bc21b 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 static org.junit.jupiter.api.Assertions.assertTrue;
 
 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.HBaseTestingUtil;
 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 HBaseTestingUtil TEST_UTIL = new HBaseTestingUtil();
@@ -65,7 +56,7 @@ public class TestStatusResource {
 
   private static void validate(StorageClusterStatusModel model) {
     assertNotNull(model);
-    assertTrue(model.getRegions() + ">= 1", model.getRegions() >= 1);
+    assertTrue(model.getRegions() >= 1, model.getRegions() + ">= 1");
     assertTrue(model.getRequests() >= 0);
     assertTrue(model.getAverageLoad() >= 0.0);
     assertNotNull(model.getLiveNodes());
@@ -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 c27d8ee2347..32ad9dcb03b 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.HBaseTestingUtil;
 import org.apache.hadoop.hbase.HRegionLocation;
 import org.apache.hadoop.hbase.ServerName;
@@ -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) {
         RegionInfo hri = e.getRegion();
         // 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 2833e9d8dee..1142fce3ebf 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;
@@ -47,7 +47,6 @@ import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.parsers.SAXParserFactory;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.hbase.Cell;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.HBaseTestingUtil;
 import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.client.Admin;
@@ -66,22 +65,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";
@@ -100,7 +96,7 @@ public class TestTableScan {
   private static final HBaseTestingUtil TEST_UTIL = new HBaseTestingUtil();
   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());
@@ -122,7 +118,7 @@ public class TestTableScan {
     }
   }
 
-  @AfterClass
+  @AfterAll
   public static void tearDownAfterClass() throws Exception {
     TEST_UTIL.getAdmin().disableTable(TABLE);
     TEST_UTIL.getAdmin().deleteTable(TABLE);
@@ -277,8 +273,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());
       }
     };
 
@@ -383,8 +379,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 158d412971b..a74e2ba23ea 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.HBaseTestingUtil;
 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 HBaseTestingUtil TEST_UTIL = new HBaseTestingUtil();
@@ -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 0db1b4afa1d..c898a8fbf07 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.HBaseTestingUtil;
 import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.client.TableDescriptorBuilder;
@@ -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 65c8a4f6c7f..8f09e416f1b 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.HBaseTestingUtil;
 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 c464a51813e..7ca4de358a3 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.HBaseTestingUtil;
 import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.client.Admin;
@@ -52,19 +51,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, MediumTests.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(MediumTests.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
@@ -105,13 +101,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)) {
@@ -143,12 +139,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();
@@ -772,5 +768,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..f139cd78d93 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,7 +91,7 @@ public class TestCellModel extends TestModelBase<CellModel> {
     assertEquals(cellModel1, cellModel2);
 
     CellModel cellModel3 = new CellModel();
-    assertFalse(cellModel1.equals(cellModel3));
+    assertNotEquals(cellModel1, cellModel3);
   }
 
   @Test
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..4d2b06a64ff 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");
@@ -50,12 +46,6 @@ public class TestCellSetModel extends 
TestModelBase<CellSetModel> {
 
   public TestCellSetModel() throws Exception {
     super(CellSetModel.class);
-    AS_XML = "<CellSet>" + "<Row key=\"dGVzdHJvdzE=\">"
-      + "<Cell timestamp=\"1245219839331\" column=\"dGVzdGNvbHVtbjE=\">" + 
"dGVzdHZhbHVlMQ==</Cell>"
-      + "</Row>" + "<Row key=\"dGVzdHJvdzE=\">"
-      + "<Cell timestamp=\"1245239813319\" column=\"dGVzdGNvbHVtbjI=\">" + 
"dGVzdHZhbHVlMg==</Cell>"
-      + "<Cell timestamp=\"1245393318192\" column=\"dGVzdGNvbHVtbjM=\">" + 
"dGVzdHZhbHVlMw==</Cell>"
-      + "</Row>" + "</CellSet>";
 
     AS_PB = 
"CiwKCHRlc3Ryb3cxEiASC3Rlc3Rjb2x1bW4xGOO6i+eeJCIKdGVzdHZhbHVlMQpOCgh0ZXN0cm93"
       + 
"MRIgEgt0ZXN0Y29sdW1uMhjHyc7wniQiCnRlc3R2YWx1ZTISIBILdGVzdGNvbHVtbjMYsOLnuZ8k"
@@ -121,18 +111,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..c6aac9eb96d 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,15 +17,15 @@
  */
 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.Test;
 
 @Category({ RestTests.class, SmallTests.class })
 public class TestColumnSchemaModel extends TestModelBase<ColumnSchemaModel> {
@@ -70,14 +70,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..50ed761ccf7 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,16 +85,13 @@ public class TestRowModel extends TestModelBase<RowModel> {
     assertEquals(rowModel1, rowModel2);
 
     RowModel rowModel3 = new RowModel();
-    assertFalse(rowModel1.equals(rowModel3));
+    assertNotEquals(rowModel1, rowModel3);
   }
 
   @Test
   public void testToString() throws Exception {
     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 f68358de634..ed089500e4b 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";
@@ -109,7 +106,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;
@@ -128,22 +125,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 {
@@ -152,7 +149,7 @@ public class TestScannerModel extends 
TestModelBase<ScannerModel> {
     ScannerResultGenerator.buildFilterFromModel(model);
   }
 
-  @Test()
+  @Test
   public void testToJsonWithIncludeStartRowAndIncludeStopRow() throws 
Exception {
     String jsonStr =
       
"{\"batch\":100,\"caching\":1000,\"cacheBlocks\":false,\"endRow\":\"enp5eng=\","
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 8310232890d..e9ca643fafc 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);
@@ -107,7 +102,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());
@@ -128,7 +123,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 0fefbbc1e15..08d41456e1b 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,27 +17,22 @@
  */
 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.TableName;
 import org.apache.hadoop.hbase.client.RegionInfo;
 import org.apache.hadoop.hbase.client.RegionInfoBuilder;
 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");
@@ -60,8 +55,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
@@ -92,6 +86,7 @@ public class TestTableRegionModel extends 
TestModelBase<TableRegionModel> {
   }
 
   @Override
+  @Test
   public void testFromPB() throws Exception {
     // no pb ignore
   }
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