diff --git a/src/main/java/com/ctci/arraysandstrings/StringCompressionTest.java b/src/main/java/com/ctci/arraysandstrings/StringCompressionTest.java
new file mode 100644
index 00000000..291a25a6
--- /dev/null
+++ b/src/main/java/com/ctci/arraysandstrings/StringCompressionTest.java
@@ -0,0 +1,66 @@
+package com.ctci.arraysandstrings;
+
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.*;
+
+class StringCompressionTest {
+    @Test
+    void case1() {
+        String input = "";
+        String expectedOutput = "";
+        String actualOutput = compressString(input);
+        assertEquals(expectedOutput, actualOutput);
+    }
+
+    @Test
+    void case2() {
+        String input = "abc";
+        String expectedOutput = "abc";
+        String actualOutput = compressString(input);
+        assertEquals(expectedOutput, actualOutput);
+    }
+
+    @Test
+    void case3() {
+        String input = "aaabbccc";
+        String expectedOutput = "a3b2c3";
+        String actualOutput = compressString(input);
+        assertEquals(expectedOutput, actualOutput);
+    }
+
+    @Test
+    void case4() {
+        String input = "aaabbbccc";
+        String expectedOutput = "a3b3c3";
+        String actualOutput = compressString(input);
+        assertEquals(expectedOutput, actualOutput);
+    }
+
+    @Test
+    void case5() {
+        String input = "abcd";
+        String expectedOutput = "abcd";
+        String actualOutput = compressString(input);
+        assertEquals(expectedOutput, actualOutput);
+    }
+
+
+    private static String compressString(String str) {
+        StringBuilder compressedSb = new StringBuilder();
+        int countConsecutive = 0;
+        for (int i = 0; i < str.length(); i++) {
+            countConsecutive++;
+
+            /* If next character is different than current, append this char to result. */
+            if (i + 1 >= str.length() || str.charAt(i) != str.charAt(i + 1)) {
+                compressedSb.append(str.charAt(i));
+                compressedSb.append(countConsecutive);
+                countConsecutive = 0;
+            }
+        }
+        return compressedSb.length() < str.length() ? compressedSb.toString() : str;
+    }
+}
\ No newline at end of file