diff --git a/testDFS.py b/testDFS.py
new file mode 100644
index 0000000000000000000000000000000000000000..84730cfaa6524a8cdc700dfd4c1e7d40ab175f30
--- /dev/null
+++ b/testDFS.py
@@ -0,0 +1,80 @@
+import unittest
+from dfs import DFS
+
+
+class TestDFS(unittest.TestCase):
+    def test_init(self):
+        dfs = DFS()
+        self.assertEqual(dfs.visited, set())
+        self.assertEqual(dfs.path, [])
+
+    def test_get_neighbours(self):
+        maze = [
+            [0, 0, 0, 1],
+            [1, 1, 0, 0],
+            [0, 1, 0, 1],
+            [0, 0, 0, 0]
+        ]
+        dfs = DFS()
+
+        self.assertEqual(dfs.get_neighbours(maze, 0, 0), [(0, 1), (1, 0)])
+        self.assertEqual(dfs.get_neighbours(maze, 1, 1), [(1, 2), (2, 1)])
+        self.assertEqual(dfs.get_neighbours(maze, 2, 2), [(2, 1), (3, 2)])
+
+    def test_dfs(self):
+        maze = [
+            [0, 0, 0, 1],
+            [1, 1, 0, 0],
+            [0, 1, 0, 1],
+            [0, 0, 0, 0]
+        ]
+        dfs = DFS()
+
+        start = (0, 0)
+        goal = (3, 3)
+        self.assertTrue(dfs.dfs(maze, start, goal))
+
+        start = (0, 0)
+        goal = (2, 2)
+        self.assertFalse(dfs.dfs(maze, start, goal))
+
+    def test__dfs(self):
+        maze = [
+            [0, 0, 0, 1],
+            [1, 1, 0, 0],
+            [0, 1, 0, 1],
+            [0, 0, 0, 0]
+        ]
+        dfs = DFS()
+
+        start = (0, 0)
+        goal = (3, 3)
+        self.assertTrue(dfs._dfs(maze, start, goal))
+
+        start = (0, 0)
+        goal = (2, 2)
+        self.assertFalse(dfs._dfs(maze, start, goal))
+
+    def test_get_path(self):
+        maze = [
+            [0, 0, 0, 1],
+            [1, 1, 0, 0],
+            [0, 1, 0, 1],
+            [0, 0, 0, 0]
+        ]
+        dfs = DFS()
+
+        start = (0, 0)
+        goal = (3, 3)
+        dfs._dfs(maze, start, goal)
+        expected_path = [(0, 0), (0, 1), (1, 1), (2, 1), (3, 1), (3, 2), (3, 3)]
+        self.assertEqual(dfs.get_path(), expected_path)
+
+        start = (0, 0)
+        goal = (2, 2)  
+        dfs._dfs(maze, start, goal)
+        self.assertEqual(dfs.get_path(), [])
+
+
+if __name__ == "__main__":
+    unittest.main()