diff --git a/hbase-hbck2/src/test/java/org/apache/hbase/TestFsRegionsMetaRecoverer.java b/hbase-hbck2/src/test/java/org/apache/hbase/TestFsRegionsMetaRecoverer.java
index 8c9c35d..ee1c08c 100644
--- a/hbase-hbck2/src/test/java/org/apache/hbase/TestFsRegionsMetaRecoverer.java
+++ b/hbase-hbck2/src/test/java/org/apache/hbase/TestFsRegionsMetaRecoverer.java
@@ -20,7 +20,6 @@
 import static org.junit.Assert.assertEquals;
 
 import java.io.ByteArrayInputStream;
-import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
@@ -56,7 +55,6 @@
 import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos;
 
 public class TestFsRegionsMetaRecoverer {
-
   private Connection mockedConnection;
   private FileSystem mockedFileSystem;
   private Table mockedTable;
@@ -175,7 +173,6 @@
   }
 
   private static final class TestInputStreamSeekable extends FSInputStream {
-
     private ByteArrayInputStream in;
     private long length;
 
@@ -186,26 +183,24 @@
     }
 
     @Override
-    public void seek(long l) throws IOException {
+    public void seek(long l) {
       this.in.skip(l);
     }
 
     @Override
-    public long getPos() throws IOException {
+    public long getPos() {
       return this.length - in.available();
     }
 
     @Override
-    public boolean seekToNewSource(long l) throws IOException {
+    public boolean seekToNewSource(long l) {
       this.in.skip(l);
       return true;
     }
 
     @Override
-    public int read() throws IOException {
+    public int read() {
       return in.read();
     }
   }
-
 }
-
diff --git a/hbase-hbck2/src/test/java/org/apache/hbase/TestHBCK2.java b/hbase-hbck2/src/test/java/org/apache/hbase/TestHBCK2.java
index d16c9f1..7b9bf2a 100644
--- a/hbase-hbck2/src/test/java/org/apache/hbase/TestHBCK2.java
+++ b/hbase-hbck2/src/test/java/org/apache/hbase/TestHBCK2.java
@@ -260,7 +260,7 @@
     final StringBuilder builder = new StringBuilder();
     PrintStream originalOS = System.out;
     OutputStream testOS = new OutputStream() {
-      @Override public void write(int b) throws IOException {
+      @Override public void write(int b) {
         builder.append((char)b);
       }
     };
@@ -349,5 +349,4 @@
       fail(e.getMessage());
     }
   }
-
 }
diff --git a/hbase-hbck2/src/test/java/org/apache/hbase/TestHBCKCommandLineParsing.java b/hbase-hbck2/src/test/java/org/apache/hbase/TestHBCKCommandLineParsing.java
index 31b0247..da37648 100644
--- a/hbase-hbck2/src/test/java/org/apache/hbase/TestHBCKCommandLineParsing.java
+++ b/hbase-hbck2/src/test/java/org/apache/hbase/TestHBCKCommandLineParsing.java
@@ -102,4 +102,3 @@
     return os.toString();
   }
 }
-
diff --git a/hbase-hbck2/src/test/java/org/apache/hbase/TestHBCKMetaTableAccessor.java b/hbase-hbck2/src/test/java/org/apache/hbase/TestHBCKMetaTableAccessor.java
index 3ada5ef..7e23657 100644
--- a/hbase-hbck2/src/test/java/org/apache/hbase/TestHBCKMetaTableAccessor.java
+++ b/hbase-hbck2/src/test/java/org/apache/hbase/TestHBCKMetaTableAccessor.java
@@ -43,7 +43,6 @@
  * Test class for the MetaTableAccessor wrapper.
  */
 public class TestHBCKMetaTableAccessor {
-
   private final static HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility();
 
   @Rule
diff --git a/hbase-hbck2/src/test/java/org/apache/hbase/TestSchedulingRecoveries.java b/hbase-hbck2/src/test/java/org/apache/hbase/TestSchedulingRecoveries.java
index 87388be..f238c7f 100644
--- a/hbase-hbck2/src/test/java/org/apache/hbase/TestSchedulingRecoveries.java
+++ b/hbase-hbck2/src/test/java/org/apache/hbase/TestSchedulingRecoveries.java
@@ -33,8 +33,6 @@
 
 import org.apache.hbase.thirdparty.com.google.protobuf.ServiceException;
 
-
-
 public class TestSchedulingRecoveries {
   private final static HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility();
   private HBCK2 hbck2;
