diff --git a/core-java-modules/core-java-arrays-guides/pom.xml b/core-java-modules/core-java-arrays-guides/pom.xml
index d22f6b4d7d..cc67add9e3 100644
--- a/core-java-modules/core-java-arrays-guides/pom.xml
+++ b/core-java-modules/core-java-arrays-guides/pom.xml
@@ -7,6 +7,10 @@
core-java-arrays-guides
jar
+
+ 2.1.5
+
+
core-java-modules
com.baeldung.core-java-modules
@@ -24,6 +28,13 @@
jmh-generator-annprocess
${jmh-generator.version}
+
+ uk.org.webcompere
+ system-stubs-jupiter
+ ${system-stubs.jupiter.version}
+ test
+
+
-
\ No newline at end of file
+
diff --git a/core-java-modules/core-java-arrays-guides/src/test/java/com/baeldung/print2darrays/Print2DArraysUnitTest.java b/core-java-modules/core-java-arrays-guides/src/test/java/com/baeldung/print2darrays/Print2DArraysUnitTest.java
new file mode 100644
index 0000000000..8694f74d9b
--- /dev/null
+++ b/core-java-modules/core-java-arrays-guides/src/test/java/com/baeldung/print2darrays/Print2DArraysUnitTest.java
@@ -0,0 +1,59 @@
+package com.baeldung.print2darrays;
+
+import java.util.Arrays;
+
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+
+import uk.org.webcompere.systemstubs.jupiter.SystemStub;
+import uk.org.webcompere.systemstubs.jupiter.SystemStubsExtension;
+import uk.org.webcompere.systemstubs.stream.SystemOut;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+@ExtendWith(SystemStubsExtension.class)
+public class Print2DArraysUnitTest {
+
+ @SystemStub
+ private SystemOut systemOut;
+
+ @Test
+ void whenPrint2dArrayUsingNestedLoop_thenLinesAreWrittenToSystemOut() {
+ int[][] myArray = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
+ for (int i = 0; i < myArray.length; i++) {
+ for (int j = 0; j < myArray[i].length; j++) {
+ System.out.print(myArray[i][j] + " ");
+ }
+ }
+ String expectedOutput = "1 2 3 4 5 6 7 8 9 ";
+ assertThat(systemOut.getLines()).containsExactly(expectedOutput);
+ }
+
+ @Test
+ public void whenPrint2dArrayUsingStreams_thenLinesAreWrittenToSystemOut() {
+ int[][] myArray = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
+ Arrays.stream(myArray)
+ .flatMapToInt(Arrays::stream)
+ .forEach(num -> System.out.print(num + " "));
+ String expectedOutput = "1 2 3 4 5 6 7 8 9 ";
+ assertThat(systemOut.getLines()).containsExactly(expectedOutput);
+ }
+
+ @Test
+ public void whenPrint2dArrayUsingDeepToString_thenLinesAreWrittenToSystemOut() {
+ int[][] myArray = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
+ System.out.println(Arrays.deepToString(myArray));
+ String expectedOutput = "[[1, 2, 3], [4, 5, 6], [7, 8, 9]]";
+ assertThat(systemOut.getLines()).containsExactly(expectedOutput);
+ }
+
+ @Test
+ public void whenPrint2dArrayUsingArrayToString_thenLinesAreWrittenToSystemOut() {
+ int[][] myArray = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
+ for (int[] row : myArray) {
+ System.out.print(Arrays.toString(row));
+ }
+ String expectedOutput = "[1, 2, 3][4, 5, 6][7, 8, 9]";
+ assertThat(systemOut.getLines()).containsExactly(expectedOutput);
+ }
+}