diff --git a/tests/phpunit/includes/abstract-testcase.php b/tests/phpunit/includes/abstract-testcase.php
index abc1234..def5678 100644
--- a/tests/phpunit/includes/abstract-testcase.php
+++ b/tests/phpunit/includes/abstract-testcase.php
@@ class WP_UnitTestCase {
     protected function set_up_fixtures() {
         parent::set_up_fixtures();
+        $this->cleanup_unzip_destination();
     }

+    /**
+     * Clean up any existing archive directory used in ZIP tests.
+     * Prevents failures when the directory is leftover from previous runs.
+     *
+     * @return void
+     */
+    protected function cleanup_unzip_destination() {
+        $dest = WP_TESTS_DIR . '/phpunit/data/filesystem/archive';
+        if ( is_dir( $dest ) ) {
+            $this->recursive_remove( $dest );
+        }
+    }

+    /**
+     * Recursively remove a directory.
+     *
+     * @param string $dir Directory path.
+     * @return void
+     */
+    protected function recursive_remove( $dir ) {
+        foreach ( glob( $dir . '/*' ) as $file ) {
+            if ( is_dir( $file ) ) {
+                $this->recursive_remove( $file );
+            } else {
+                unlink( $file );
+            }
+        }
+        rmdir( $dir );
+    }
 }
