diff --git a/jspwiki-main/src/test/java/org/apache/wiki/TestEngine.java b/jspwiki-main/src/test/java/org/apache/wiki/TestEngine.java
index e2c3849..f012adb 100644
--- a/jspwiki-main/src/test/java/org/apache/wiki/TestEngine.java
+++ b/jspwiki-main/src/test/java/org/apache/wiki/TestEngine.java
@@ -423,13 +423,15 @@
     private static String cleanNewDirFrom( final String pageDir, final long millis ) {
         final String testEngineCreationOrigin = getTestEngineCreationOrigin();
         if( StringUtils.isBlank( pageDir ) ) {
-            return "target/" + millis + "-" + testEngineCreationOrigin;
+            return "target" + File.separator + millis + "-" + testEngineCreationOrigin;
         }
-        if( pageDir.lastIndexOf( '/' ) == -1 ) {
-            return "target/" + millis + "-" + testEngineCreationOrigin + "-" + pageDir;
+        // take into account executions on Windows boxes can have both / and \
+        final int lastDirPosition = Math.max( pageDir.lastIndexOf( '/' ), pageDir.lastIndexOf( File.separator ) );
+        if( lastDirPosition == -1 ) {
+            return "target" + File.separator + millis + "-" + testEngineCreationOrigin + "-" + pageDir;
         }
-        final String stripNumbers = pageDir.substring( pageDir.lastIndexOf( '/' ) );
-        return pageDir.substring( 0, pageDir.lastIndexOf( '/' ) + 1 )
+        final String stripNumbers = pageDir.substring( lastDirPosition );
+        return pageDir.substring( 0, lastDirPosition + 1 )
              + millis
              + "-" + testEngineCreationOrigin
              + stripNumbers.replaceAll( "\\d", StringUtils.EMPTY ); // place all related tests' folders one next to the others
